wpf mvvm datagrid 中button绑定命令方法
时间: 2023-12-09 22:04:36 浏览: 63
在WPF MVVM中,你可以使用命令模式来将一个按钮的点击事件绑定到ViewModel中的一个方法。以下是在DataGrid中使用按钮并绑定命令方法的步骤:
1. 在ViewModel中创建一个ICommand属性,该属性将绑定到按钮的Command属性。可以使用RelayCommand等现有的ICommand实现,也可以自己实现ICommand接口。如下所示:
```csharp
public class MyViewModel
{
public ICommand MyCommand { get; set; }
public MyViewModel()
{
MyCommand = new RelayCommand(ExecuteMyCommand);
}
private void ExecuteMyCommand(object parameter)
{
// 在这里编写命令方法的代码
}
}
```
2. 在XAML中,在DataGrid中创建一个Button列,并将Button的Command属性绑定到ViewModel中的命令属性。如下所示:
```xaml
<DataGrid ...>
<DataGrid.Columns>
...
<DataGridTemplateColumn Header="Action">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Do Something" Command="{Binding DataContext.MyCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" CommandParameter="{Binding}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
```
注意,这里使用了RelativeSource来绑定到Window的DataContext,因为DataGrid的DataContext通常是绑定到ViewModel的。
3. 运行应用程序并单击按钮时,将调用ViewModel中的ExecuteMyCommand方法。
请注意,如果你要在DataGrid中使用按钮,可能需要使用DataGridTemplateColumn来创建一个自定义列。在该列中,使用DataTemplate来定义Button的外观和行为,并将Button的Command属性绑定到ViewModel中的命令属性。还可以将Button的CommandParameter属性绑定到DataGrid中的当前行,以便在命令方法中访问该行的数据。