wip*_*y10 8 c# wpf mvvm wpfdatagrid mvvm-light
我有一个带有复选框的DataGrid,使用我在互联网上找到的代码.
<my:DataGrid.RowHeaderTemplate>
<DataTemplate>
<Grid>
<CheckBox IsChecked="{Binding Path=IsSelected, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type my:DataGridRow}}}" />
</Grid>
</DataTemplate>
</my:DataGrid.RowHeaderTemplate>
Run Code Online (Sandbox Code Playgroud)
但是,我如何获得所选行?我正在使用WPF MVVM.
Rob*_*ito 12
因为你正在使用MVVM模式,你可以像这样声明一个ViewMode:
public class MyViewModel
{
public ObservableCollection<Prototype> Items { ... }
public Prototype SelectedItem SelectedItem { ... }
}
Run Code Online (Sandbox Code Playgroud)
之后,在您的数据网格中,您可以通过以下方式声明绑定:
<DataGrid ItemSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}"... />
Run Code Online (Sandbox Code Playgroud)
在您的代码中,您可以使用"SelectedItem"属性来获取当前选定的数据网格行.否则,如果您的意思是"已检查"行,则可以查询您的可观察集合:
var selectedRows = ViewModel.Items.Where(i => i.IsSelected);
Run Code Online (Sandbox Code Playgroud)