目标:我试图通过单击来扩展我的树视图项目。我需要访问所选节点的DataContext
并设置扩展/折叠属性。
我尝试了什么
我已将EventSetter
放在TreeViewItem
MouseLeftButtonUp
(MLBU)& PreviewMouseLeftButtonUp
。但是,当单击叶子节点时,在MLBU处理程序中,我将发件人的Header属性作为Parent而不是leaf。 OriginalSource
正确指向叶控件。但是,如果我使用它,我将必须确定所有类型的源,然后从中获取值。
还有其他方法可以实现这个目标吗?
修改
用于设置事件的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>
树视图项根据要求具有不同的datatemplate。因此,在OriginalSource中,它可以是Image
或System.Windows.Documents.Run
(来自Label
)。因此,我必须为我创建的每种控件添加if-else。然而,我的DataContext具有每个项目的顶级接口,其属性我可以设置为扩展它。因此,通用转换将起作用。