wpf - TreeView SelectedItem 返回类型

标签 wpf treeview selecteditem treeviewitem

我有一个 TreeView,它使用 HierarchicalDataTemplate 和 View 模型作为不同节点上的数据上下文。我想从 TreeView.SelectedItem 访问一些 TreeViewItem 属性 - 但这返回一个 View 模型对象而不是 TreeViewItem。
如何获取对所选项目的 TreeViewItem 引用?
(我在 SelectedItemChanged 处理程序中遇到同样的问题 - 对象发送者是 View 模型 - 如何获取 TreeViewItem?)
[有一个 TreeView 属性 SelectedContainer 它返回一个 TreeViewItem 但它不可访问:-( ]

粮食计划署令人沮丧的事情是,很容易陷入这种“细节”,而且似乎必须有一个简单/明显的解决方案,但是......

最佳答案

将 TreeView 绑定(bind)到数据上下文后,您将始终获得 View 模型对象。如果要操作 TreeViewItem 对象来响应事件,则需要通过绑定(bind)来完成。例如,可以使用样式将 IsExpanded、IsSelected 属性绑定(bind)到 View 模型属性。以下代码自动将选定的树项目加粗,并将上述属性绑定(bind)到 View 模型属性,我可以在其中操作/读取它们。

        <TreeView x:Name="treeEquipment"
              ItemsSource="{Binding RootEquipment}" 
        <TreeView.ItemContainerStyle>
            <Style TargetType="{x:Type TreeViewItem}">
                <EventSetter Event="TreeViewItem.MouseRightButtonDown"
                             Handler="TreeViewItem_MouseRightButtonDown"/>
                <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
                <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
                <Setter Property="FontWeight" Value="Normal" />
                <Style.Triggers>
                    <Trigger Property="IsSelected" Value="True">
                        <Setter Property="FontWeight" Value="Bold" />
                    </Trigger>
                </Style.Triggers>
            </Style> 
        </TreeView.ItemContainerStyle>

关于wpf - TreeView SelectedItem 返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9481231/

相关文章:

c# - WPF 文本覆盖网格

.net - 为什么在XAML中不调用附加属性Set和Get静态方法?

c# - 有没有办法在调试时查看 UI 更新?

python - PyGtk - 在特定行的 TreeView 中设置复选框不可见

c# - 如何从对象列表填充 TreeView

c# - UWP 中的 GridView

c# - 如何在 TextBox 的 ListBoxes 多重绑定(bind)中显示项目的属性值

c# - 如何在wpf mvvmlight中为datagrid实现 "nextpage"函数

vb.net - 多次快速单击时 CheckBox 无法正常工作

wpf - IsSynchronizedWithCurrentItem 属性和当前项目更新