KeyBinding на TreeViewItem

У меня есть типичный treeview и viewmodel. viewmodel имеет заметный набор другого viewmodels, который служит источником данных для дерева.

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.

Если я перемещаю KeyBinding в TreeView. InputBindings (и ICommand / RelayCommand от ItemVM до TreeViewVM) все хорошо, команда вызывается.

Но я хотел бы иметь команду на ItemVM (как это - где это имеет смысл). Какие-либо идеи?

8
задан Andrei Rînea 29 June 2010 в 16:05
поделиться