1

我有一个标准的 WPF TreeView 控件。如果展开 TreeViewItem 节点,TreeViewItem 有一个旋转的箭头。

如果选择了其中一个子节点,则默认情况下 TreeView 会将突出显示设置为折叠节点。我已经设法确保当一个节点折叠时我的 VM 上的 SelectedItem 不会更新,即使如果之前选择了其中一个子节点,控件中的选择图形会跳转到该节点。(我通过将 TreeView 上的 MouseUp 事件绑定到我的 VM 上的命令而不是使用 SelectedItemChanged 解决了这个问题,我提供了 SelectedItem 作为命令参数,这样我的 VM 上的 SelectedItem 不会改变,除非用户真正单击一个节点)

问题是,当使用箭头再次展开折叠的节点时,我希望选择突出显示再次跳回子节点,这实际上是我在 VM 上将其属性 IsSelected 设置为 true 的集合中的项目。

如果我可以在Mousedown上的VM上触发命令,或者在检查togglebutton时,我可能可以解决此问题。

问题是,我没有找到一种方法来强制 TreeView 的 ToggleButton 上的 MouseDown 事件通过以样式应用它来触发我的 VM 上的命令。可能吗?如果是这样,怎么能做到这一点。我使用 MVVM-Light,所以我最好使用 EventToCommand,但这似乎在 Style 中根本不起作用?

我想做什么......(并让它影响 TreeView 中的 ToggleButton)

 <Style TargetType="{x:Type ToggleButton}">
 <i:Interaction.Triggers>
   <i:EventTrigger EventName="MouseDown">
     <command:EventToCommand Command="{Binding UpdateTreeState}"/>
   </i:EventTrigger>
  </i:Interaction.Triggers>
 </Style>
4

0 回答 0