我需要HierarchicalDataTemplate的帮助..。我试图构建一个TreeView来显示一些分层数据,如下所示:
- RuleD
RuleA,...派生自具有
RuleSet有
据我所知,我的代码是:
<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填满了correctly...can,有人帮忙吗?
谢谢!
发布于 2012-05-09 13:38:15
在第一个ItemsSource中没有指定任何HierarchicalDataTemplate。难道不应该将其绑定到RuleSet的RuleSet属性吗?
发布于 2012-05-09 23:20:28
为什么要将另一个分层数据模板嵌套到现有的模板中?这可能是个错误。特别是因为您没有在第一个数据模板中指定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}"/>https://stackoverflow.com/questions/10515340
复制相似问题