0

目标:我试图通过单击来扩展我的树视图项目。我需要访问DataContext所选节点并设置展开/折叠的属性。

我已经尝试过EventSetter( TreeViewItemMLBU 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 中,它可以是ImageSystem.Windows.Documents.Run(为Label)。因此,我必须为我创建的每种类型的控件添加 if-else。然而,我的 DataContext 具有我可以设置其属性以扩展它的每个项目的顶级接口。因此,通用转换将起作用。

4

0 回答 0