我有一个 wpf 特定的问题。我试图从 Datagrid 中删除一行,方法是定义一个键绑定(bind),该键绑定(bind)将 Datagrid 的选定行作为命令参数传递给命令。
这是我的键绑定(bind):
<UserControl.Resources >
<Commands:CommandReference x:Key="deleteKey" Command="{Binding DeleteSelectedCommand}"/>
</UserControl.Resources>
<UserControl.InputBindings>
<KeyBinding Key="D" Modifiers="Control" Command="{StaticResource deleteKey}"/>
</UserControl.InputBindings>
我知道这基本上有效,因为我可以调试到 DeleteSelectedCommand。但是,会出现异常,因为 DeleteSelectedCommand 期望将 Datagrid 的一行作为调用参数删除。
如何通过键绑定(bind)传递 SelectedRow?
如果可能,我只想在 XAML 中执行此操作,而不更改隐藏代码。
最佳答案
与其尝试使用命令参数,不如创建一个属性来存储所选行:
private Model row;
public Model Row
{
get { return row; }
set
{
if (row != value)
{
row = value;
base.RaisePropertyChanged("Row");
}
}
}
其中 Model 是您的网格显示的对象的类。
在数据网格上添加 selectedItem 属性以使用该属性:
<DataGrid SelectedItem="{Binding Row, UpdateSourceTrigger=PropertyChanged}"/>
然后让您的命令通过行传递给方法:
public ICommand DeleteSelectedCommand
{
get
{
return new RelayCommand<string>((s) => DeleteRow(Row));
}
}
以及您的按键绑定(bind):
<DataGrid.InputBindings>
<KeyBinding Key="Delete" Command="{Binding DeleteSelectedCommand}" />
</DataGrid.InputBindings>
希望有帮助!
关于wpf - 通过键绑定(bind)从 Datagrid 传递命令参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8213105/