作为first TreeView question on SO的后续内容,我无法将TreeView控件绑定到同一TreeView控件中的Commission对象和其Products集合的Id属性。 这是我的简化模型:
internal class Contract
{
public string Name { get; set; }
public ObservableCollection<Commission> Commissions { get; set; }
}
internal class Commission
{
public string Id { get; set; }
public ObservableCollection<Product> Products { get; set; }
}
internal class Product
{
public string Code { get; set; }
}
这是我的问题XAML。合同返回委员会对象(委员会)的集合。我已经注释掉了用于返回产品的HierarchicalDataTemplate。 HierarchicalDataTemplate可以单独工作,但如果两者都取消注释则不会:
<TreeView ItemsSource="{Binding Contract.Commissions}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type m:Commission}">
<TextBlock Text="{Binding Id}" />
</HierarchicalDataTemplate>
<!--<HierarchicalDataTemplate DataType="{x:Type m:Commission}" ItemsSource="{Binding Products}">
<TextBlock Text="{Binding Code}" />
</HierarchicalDataTemplate>-->
</TreeView.Resources>
</TreeView>
如果两个HierarchicalDataTemplates都被取消注释,则抛出错误,因为我使用了两次唯一(委员类型),但我不知道如何使HierarchicalDataTemplate工作而不使用Commission Type作为模板的DataType。
答案 0 :(得分:2)
你在这里喋喋不休。我假设你想要显示委员会的Id并在每个委员会节点下面显示子产品的代码值。
只需要一个HierarchicalDataTemplate
佣金和一个DataTemplate
产品:
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type m:Commission}"
ItemsSource="{Binding Products}">
<TextBlock Text="{Binding Id}" />
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type m:Product}">
<TextBlock Text="{Binding Code}" />
</DataTemplate>
</TreeView.Resources>
<强>解释强>:
HierarchicalDataTemplate
。在你的案件委员会。ItemsSource
设置为您需要在这些节点下显示的子集合。在您的情况下Products
。DataTemplate
。在你的情况下产品。