WPF MVVM检索datagrid选定的行

时间:2012-06-28 07:34:55

标签: c# wpf mvvm mvvm-light wpfdatagrid

我有一个带有复选框的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>

但是,我怎样才能获得所选行?我正在使用WPF MVVM。

1 个答案:

答案 0 :(得分:10)

因为你正在使用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);