我需要HierarchicalDataTemplate的一些帮助...... 我正在尝试构建一个TreeView来显示一些分层数据 像这样:
RuleA,...派生自具有
的相同RuleBaseRuleSet有
我的代码就我而言:
<TreeView x:Name="ruleSetTree" Margin="0,10,0,0" ItemsSource="{Binding Path=SelectedTypeRuleSet>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type engine:RuleSet}">
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate x:Name="leafTemplate"
ItemsSource="{Binding Path=Rules}"
DataType="{x:Type engine:RuleBase}">
<TextBlock Text="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
<TextBlock x:Name="hierarchyItem" Text="{Binding Path=TargetType}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
我现在看到的是RuleSet的名称。 TreeView的切换按钮被隐藏。 我将xml反序列化到我的RuleSet模型中以获取此TreeView的数据。 RuleSet被正确填写......任何人都可以伸出援助之手吗?
谢谢!
答案 0 :(得分:0)
第一个ItemsSource
中未指定HierarchicalDataTemplate
。你不应该将它绑定到List
的{{1}}属性吗?
答案 1 :(得分:0)
为什么要将另一个分层数据模板嵌入到现有分层数据模板中?这可能是错误的。特别是因为您没有在第一个数据模板中指定ItemSource。如果所有节点都是RuleSet
类型,您可以这样做:
<TreeView x:Name="ruleSetTree" Margin="0,10,0,0" ItemsSource="{Binding Path=SelectedTypeRuleSet>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type engine:RuleSet}"
ItemsSource="{Binding Path=Rules}">
<StackPanel>
<TextBlock Text="{Binding Path=Name}"/>
<TextBlock Text="{Binding Path=TargetType}"/>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
<强>更新强>
这是一个更新版本,应该符合您的要求。但是,如果所有子节点都是RuleBase
<UserControl.Resources>
<HierarchicalDataTemplate x:Key="RuleBaseTemplate"
ItemsSource="{Binding Rules}">
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="RuleSetTemplate"
ItemsSource="{Binding Rules}"
ItemTemplate="{StaticResource RuleBaseTemplate}">
<StackPanel>
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding TargetType}"/>
</StackPanel>
</HierarchicalDataTemplate>
</UserControl.Resources>
<!-- rest of the code -->
<TreeView x:Name="ruleSetTree" Margin="0,10,0,0"
ItemsSource="{Binding SelectedTypeRuleSet}"
ItemTemplate="{StaticResource RuleSetTemplate}"/>