2
MVVMで2レベルの構造化データを表現する必要があります。データは次のようになり場合:直接リンクのない2レベルの構造化データのWPFバインド
public class ParentEntity
{
public ObservableCollection<ChildEntity> ChildsEntities { get; set; } = new ObservableCollection<ChildEntity>();
public string Name { get; set; }
}
public class ChildEntity
{
public string Name { get; set; }
public int Value { get; set; }
}
その後、私はツリービューとの結合を作成します:
<TreeView x:Name="treeView">
<TreeView.Resources>
<!--Template for ParentEntity-->
<HierarchicalDataTemplate DataType="{x:Type ParentEntity}" ItemsSource="{Binding ChildsEntities}">
<TextBox Text="{Binding Name}"/>
</HierarchicalDataTemplate>
<!--Template for ChildEntity-->
<DataTemplate DataType="{x:Type ChildEntity}">
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding Name}"/>
<TextBox Text="{Binding Value}"/>
</StackPanel>
</DataTemplate>
</TreeView.Resources>
</TreeView>
ObservableCollection<ParentEntity> data = new ObservableCollection<ParentEntity>();
treeView.ItemsSource = data ;
しかし、私は(ライブラリーからの)このような構造を持っている:
public class ParentEntity
{
public int UID { get; set; }
public string Name { get; set; }
}
public class ChildEntity
{
public int ParentUID { get; set; }
public string Name { get; set; }
public int Value { get; set; }
}
、それはどのようにする必要があります取り扱った?ありがとう。
質問の最初の部分で説明した構造を提供するオブジェクトにエンティティをラップすることを検討しましたか? – vkluge
はい、それは最初の考えでしたが、私はそれが正しいアプローチであるかどうかはわかりません。 – Feofilakt
IValueConverterを使用して、対応する子オブジェクトを親に返すメソッドを呼び出すことができます。[here](http://stackoverflow.com/a/844946/4189791)参照してください。これは間違いなく "正しい"アプローチ。 – vkluge