При этом Node не выделен. TreeView заполняется через ObservableCollection.
Asked
Active
Viewed 104 times
1
1 Answers
2
Так как св-во TreeView(MouseRightButtonDown) ничего мне не дало, я воспользовался советом Андрей NOP и использовал команду InputBingings. Итак:
Создал команду pkmNode во ViewModel;
private static RoutedUICommand pkmNode; public static RoutedUICommand PkmNode { get { return pkmNode; } } public ViewModel() { // Инициализация команды pkmNode = new RoutedUICommand("pkmNode", "pkmNode", typeof(ViewModel)); }Произвел регистрацию команды PkmNode в конструкторе главного окна
ViewModel vm; public General() { InitializeComponent(); CommandBinding cb = new CommandBinding(); vm = new ViewModel(this); cb.Command = ViewModel.PkmNode; cb.Executed += PkmNode_Executed; Window1.CommandBindings.Add(cb); treeView.ItemsSource = vm.LoadNapDB(); }В шаблоне TreeViewItem в Border через InputBindings привязую ПКМ к своей команде и передаю текcт Node TreeView на котором произошел ПКМ
<Border.InputBindings> <MouseBinding Gesture="RightClick" Command="local:ViewModel.PkmNode" CommandParameter="{Binding MyHeader}"/> </Border.InputBindings>Принимаю переданные параметры в своем обработчике команды
private void PkmNode_Executed(object sender, ExecutedRoutedEventArgs e) { var d = e.Parameter; }
Еще раз спасибо Андрею NOP за своевременно указанный путь и помощь. Всем удачи))
Андрей NOP
- 28,687
Алекс Дронго
- 53
RightClick. Вот здесь полный перечень мышиных жестов: https://msdn.microsoft.com/ru-ru/library/system.windows.input.mouseaction(v=vs.110).aspx Их можно использовать также с клавишами-модификаторами: https://msdn.microsoft.com/ru-ru/library/system.windows.input.mousebinding.gesture(v=vs.110).aspx – Андрей NOP Apr 21 '18 at 11:05Executed="PkmNode_Executed"? – Андрей NOP Apr 22 '18 at 08:45