C# 键绑定标签

C# 键绑定标签,c#,wpf,inputbinding,C#,Wpf,Inputbinding,我有一个具有以下定义的树视图: <TreeView ItemsSource="{Binding Folders, UpdateSourceTrigger=PropertyChanged}" x:Name="tree"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Folders, UpdateSourceTrigger=PropertyChan

我有一个具有以下定义的树视图:

<TreeView ItemsSource="{Binding Folders, UpdateSourceTrigger=PropertyChanged}" x:Name="tree">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Folders, UpdateSourceTrigger=PropertyChanged}">
            <Label Content="{Binding Name}" >
                <Label.InputBindings>
                    <KeyBinding Key="Delete"
                                Command="{Binding DataContext.DeleteFolderCommand, RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}}"/>
                    <MouseBinding MouseAction="LeftDoubleClick"
                                  Command="{Binding DataContext.SelectFolderCommand, RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}}"
                                  CommandParameter="{Binding ElementName=tree, Path=SelectedItem}" />
                </Label.InputBindings>
            </Label>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>
在构造函数中,我定义:

DeleteFolderCommand = new RelayCommand(DeleteFolder);
DeleteFolder方法如下所示:

public ICommand DeleteFolderCommand
{
    get { return _deleteFolderCommand; }
    set
    {
        _deleteFolderCommand = value;
        OnPropertyChanged();
    }
}
private void DeleteFolder(object parameter)
{
  // Break-Point here will not be reached                
}
我做错了什么


我已经检查了输出窗口中的绑定错误,但是没有任何错误。

我通过直接在树视图中处理键绑定来管理它


乍一看,装订看起来还不错。SelectFolderCommand有效吗?DeleteFolderCommand是否与SelectFolderCommand存在于同一个VM中?是的,SelectFolderCommand工作正常。并且DeleteFolderCommand位于同一ViewModel中。此时,您可以检查Delete键是否在任何位置被使用。当您按下Delete键时,该项处于焦点位置。我认为这就是问题所在,label上的keybinding不会将标签包装在contentcontrol上,而是使用contentcontrol上的输入绑定。
<TreeView ItemsSource="{Binding Folders, UpdateSourceTrigger=PropertyChanged}" x:Name="tree">
    <TreeView.InputBindings>
        <KeyBinding Key="Delete" Command="{Binding DataContext.DeleteFolderCommand, RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}}"/>
    </TreeView.InputBindings>
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Folders, UpdateSourceTrigger=PropertyChanged}">
            <Label Content="{Binding Name}">
                <Label.InputBindings>
                    <MouseBinding MouseAction="LeftDoubleClick"
                                Command="{Binding DataContext.SelectFolderCommand, RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}}"
                                CommandParameter="{Binding ElementName=tree, Path=SelectedItem}" />
                </Label.InputBindings>
            </Label>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>