我有一個典型的treeview和viewmodel。視圖模型有一個可觀察的其他視圖模型集合,用作樹的數據源。TreeViewItem上的KeyBinding
public class TreeViewVM {
public ObservableCollection<ItemVM> Items { get; private set; }
public ItemVM SelectedItem { get; set; }
}
和ItemVM:
public class ItemVM {
public string Name { get; set; }
public ImageSource Image { get; private set; }
public ObservableCollection<ItemVM> Children { get; private set; }
public ICommand Rename { get; private set; }
}
的觀點:
<TreeView Selecteditem="{Binding SelectedItem}" ItemsSource="{Binding Items}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate>
<StackPanel Orientation="Horizontal">
<StackPanel.InputBindings>
<KeyBinding Key="F2" Command="{Binding Rename}"/>
</StackPanel.InputBindings>
<Image Source="{Binding Image}"/>
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
但是我的命令不會不管我怎麼努力,只要它是援引 「內部」 的HierarchicalDataTemplate 。
如果我將TreeView.InputBindings中的KeyBinding(以及ItemVM中的ICommand/RelayCommand移動到TreeViewVM)都很好,則會調用該命令。
但我想在ItemVM上有命令(因爲它是有意義的)。有任何想法嗎?
好的,謝謝! – 2013-01-23 14:00:53
這對我很好。感謝您指出** SelectedItem **。重命名。 – 2014-04-02 14:43:14
@MartinLiversage,請參閱我的問題 http://stackoverflow.com/questions/36865204/keybinding-in-hierarchicaldatatemplate-of-treeview – StepUp 2016-04-26 12:43:42