MVVM-Light EventToCommand в стиле - PullRequest
0 голосов
/ 03 мая 2019

У меня есть стандартный WPF TreeView элемент управления.TreeViewItem имеет стрелку, которая вращается, если развернуть узел TreeViewItem.

TreeView по умолчанию устанавливает подсветку свернутого узла, если был выбран один из его дочерних элементов.Мне удалось убедиться, что SelectedItem на моей виртуальной машине не обновляется, когда один из узлов сворачивается, даже если графика выбора в элементе управления переходит на этот узел, если один из дочерних элементов был выбран ранее.(Я решил, что, связывая событие MouseUp на TreeView с командой на моей виртуальной машине, а не используя SelectedItemChanged, я предоставляю SelectedItem в качестве commandaparameter, поэтому SelectedItem на моей виртуальной машине не изменится, пока пользователь действительно не щелкнет узел)

Проблема в том, что когда снова развернуть свернутый узел, используя стрелку, я бы хотел, чтобы подсветка выделения снова вернулась к дочернему элементу, который действительно является элементом в моей коллекции на виртуальной машине, для свойства IsSelected которого установлено значениеtrue.

Если бы я мог просто вызвать команду на своей виртуальной машине в MouseDown или когда была проверена кнопка ToggleButton, я мог бы решить эту проблему.

Проблема в том, что я не нахожу способ заставить событие MouseDown на ToggleButton TreeView вызвать команду на моей виртуальной машине, применяя ее в стиле.Является ли это возможным?если так, как можно это сделать.Я использую MVVM-Light, поэтому желательно, чтобы я использовал EventToCommand, но, похоже, это не работает вообще изнутри стиля?

Что я хотел бы сделать ... (и влияет ли это на ToggleButtonв виде дерева)

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