C# 将DataGrid行绑定到ViewModel中的方法
我有一个DataGrid,我想用它制作一个CRUD,它绑定到ViewModel中的一个ObservableCollection,我在它的每一行创建了一个Delete按钮,问题是当我单击按钮时,事件从模型而不是ViewModel触发,所以我不能真正访问集合,只能访问选定的对象 我的看法是:C# 将DataGrid行绑定到ViewModel中的方法,c#,wpf,mvvm,binding,datagrid,C#,Wpf,Mvvm,Binding,Datagrid,我有一个DataGrid,我想用它制作一个CRUD,它绑定到ViewModel中的一个ObservableCollection,我在它的每一行创建了一个Delete按钮,问题是当我单击按钮时,事件从模型而不是ViewModel触发,所以我不能真正访问集合,只能访问选定的对象 我的看法是: <DataGrid x:Name="EmployeeDataGrid" AutoGenerateColumns="False" ItemsSource="{Binding Path=Employees}"
<DataGrid x:Name="EmployeeDataGrid" AutoGenerateColumns="False" ItemsSource="{Binding Path=Employees}">
<DataGrid.Columns>
<DataGridTextColumn Header="First Name" Binding="{Binding FirstName}"/>
<DataGridTextColumn Header="Last Name" Binding="{Binding LastName}"/>
<DataGridTextColumn Header="Date Of Birth" Binding="{Binding DateOfBirth}"/>
<DataGridTextColumn Header="Address" Binding="{Binding Address}"/>
<DataGridTextColumn Header="Salary" Binding="{Binding Salary}"/>
<DataGridTextColumn Header="Function" Binding="{Binding Function}"/>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Click="{Binding Path=Update_Click}">Update</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button >Delete</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
使现代化
删去
将属性添加到模型中,例如公共对象标记{get;set;}
创建行实例对象时,将引用分配给VM或您试图在
标记中找到的任何对象。这样,当操作从前面提到的实例运行时,只需将标记
反引用到所需的类引用中,并利用它所指向的对象即可。在ViewModel中,创建一个ICommand属性,该属性设置为采用参数的命令类,例如-参数是employee类的实例
您可以像这样绑定模板中的按钮
<Button Content="Update"
Command="{Binding Path=DataContext.UpdateCommand,
RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding}" />
CommandParameter绑定传入DataGrid中该行的employee项