目标:我试图通过单击来扩展我的树视图项目。我需要访问DataContext
所选节点并设置展开/折叠的属性。
我已经尝试过
的EventSetter
( TreeViewItem
MLBU MouseLeftButtonUp
) & PreviewMouseLeftButtonUp
. 但是,当单击叶节点时,在 MLBU 处理程序中,我将发送者的 Header 属性作为父节点而不是叶节点。OriginalSource
正确指向叶子控制。但是如果我使用它,我将不得不确定所有类型的 Sources,然后从中获取价值。
有没有其他方法可以做到这一点?
编辑
用于设置事件的 XAML:
<Style TargetType="TreeViewItem" BasedOn="{StaticResource SomeStyle}">
<Setter Property="IsExpanded" Value="{Binding Path=IsExpanded, Mode=TwoWay}"/>
<EventSetter Event="PreviewMouseLeftButtonUp" Handler="OnPreviewMouseLeftButtonUp"/>
<EventSetter Event="MouseLeftButtonUp" Handler="OnMouseLeftButtonUp"/>
</Style>
树视图项根据要求具有不同的数据模板。因此,在 OriginalSource 中,它可以是Image
或System.Windows.Documents.Run
(为Label
)。因此,我必须为我创建的每种类型的控件添加 if-else。然而,我的 DataContext 具有我可以设置其属性以扩展它的每个项目的顶级接口。因此,通用转换将起作用。