for*_*yez 4 c# silverlight wpf xaml
是的,乍一看这似乎很基本。但问题是:我使用 MVVM 和分层数据绑定来填充树。
我很难做的是让第一个节点扩展。原因是:
由于我位于视图模型代码中,因此我没有直接引用树。(MVVM 让我抓狂)。
我实际上已经弄清楚如何通过在视图的 xaml 中使用样式来扩展所有节点,但我现在只想扩展第一个节点,但我无法弄清楚。
有任何想法吗?
我能够实现此目的的最简单方法是使用样式(您可以将所有内容保留在 XAML 中,并且不需要任何特殊的 MVVM 属性)。您可以在实际的 TreeView 元素上设置顶级 ItemContainerStyle 来设置根 TreeViewItem 的样式并将其显示为展开的。然后将 HierarchicalDataTemplate 元素上的 ItemContainerStyle 设置为其他级别上所有节点的默认 TreeViewItem 样式。BasedOn 属性将使您可以轻松继承整个 TreeViewItem 样式,并且仅更改 IsExpanded 属性。
主要的 TreeView XAML:
<TreeView x:Name="Tree" ItemContainerStyle="{StaticResource RootTreeViewItemStyle}">
<TreeView.ItemTemplate>
<common:HierarchicalDataTemplate ItemContainerStyle="{StaticResource TreeViewItemStyle}">
<!-- rest of your template... -->
</common:HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
Run Code Online (Sandbox Code Playgroud)
您的基本 TreeViewItem 样式:
<Style x:Key="TreeViewItemStyle" TargetType="TreeViewItem">
<!-- your normal or default TreeViewStyle... -->
</Style>
Run Code Online (Sandbox Code Playgroud)
根 TreeViewItem 样式:
<Style x:Key="RootTreeViewItemStyle" TargetType="TreeViewItem" BasedOn="{StaticResource TreeViewItemStyle}">
<Setter Property="IsExpanded" Value="True"/>
</Style>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4217 次 |
| 最近记录: |