从父级而不是叶子

时间:2015-10-09 07:02:15

标签: wpf treeview mouseleftbuttonup

目标:我试图通过单击来扩展我的树视图项目。我需要访问所选节点的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中,它可以是ImageSystem.Windows.Documents.Run(来自Label)。因此,我必须为我创建的每种控件添加if-else。然而,我的DataContext具有每个项目的顶级接口,其属性我可以设置为扩展它。因此,通用转换将起作用。

0 个答案:

没有答案