C# · 12月 22, 2021

c# – WPF MVVM检索datagrid选定的行

我有一个带有复选框的DataGrid,使用我在互联网上找到的代码. <my:DataGrid.RowHeaderTemplate> <DataTemplate> <Grid> <Check@R_422_2419@ IsChecked=”{Binding Path=IsSelected,Mode=TwoWay,RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type my:DataGridRow}}}” /> </Grid> </DataTemplate></my:DataGrid.RowHeaderTemplate>

但是,我如何获得所选行?我正在使用WPF MVVM.

解决方法 因为你正在使用MVVM模式,你可以像这样声明一个viewmode: public class Myviewmodel { public ObservableCollection<Prototype> Items { … } public Prototype SelectedItem SelectedItem { … }}

之后,在您的数据网格中,您可以通过以下方式声明绑定:

<DataGrid ItemSource=”{Binding Items}” SelectedItem=”{Binding SelectedItem,Mode=TwoWay}”… />

在您的代码中,您可以使用“SelectedItem”属性来获取当前选定的数据网格行.
否则,如果您的意思是“已检查”行,则可以查询您的可观察集合:

var selectedRows = viewmodel.Items.Where(i => i.IsSelected);