WPF MVVM命令,键绑定未触发

时间:2013-01-30 20:48:31

标签: wpf data-binding mvvm

按下删除键不会导致触发下面的命令。可以假设DelegateCommand遵循接口契约,因为View中引用的DelegateCommand的其他实例在ViewModel中正确触发。

为什么?

查看:

<ListBox Height="132"
     Name="lbFiles"
     ItemsSource="{Binding LbItems, UpdateSourceTrigger=PropertyChanged,ValidatesOnDataErrors=True}"  
     VerticalAlignment="Center"
     SelectedValue="{Binding Path=ListBoxSelection}">
<ListBox.InputBindings>
    <KeyBinding Key="Delete"
                Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}
                ,Path=DataContext.CommandInputFilesDeleteSelected}" />
</ListBox.InputBindings>

视图模型:

private DelegateCommand commandInputFilesDeleteSelected;

public ICommand CommandInputFilesDeleteSelected {
    get {
            if (commandInputFilesDeleteSelected == null) {
                commandInputFilesDeleteSelected = new DelegateCommand(InputFilesDeleteSelected);
            }
    return saveCommand;
    }
}

private void InputFilesDeleteSelected() { //this never fires :( 
        LbItems.Remove(ListBoxSelection); 
}

1 个答案:

答案 0 :(得分:0)

private DelegateCommand commandInputFilesDeleteSelected;

public ICommand CommandInputFilesDeleteSelected {
    get {
            if (commandInputFilesDeleteSelected == null) {
                commandInputFilesDeleteSelected = new DelegateCommand(InputFilesDeleteSelected);
            }
    return saveCommand;  //changed from saveCommand to commandInputFilesDeleteSelected whoops
    }
}