2012-06-28 64 views
6

我有一个DataGrid复选框实现它使用这个代码,我在互联网上找到。WPF MVVM检索数据网格选择行

<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

请你能乡亲添加评论时,你们是downvoting质疑。然后,他们会知道为什么他们的问题被低估。谢谢。 –

+0

明白了..谢谢。 – wipindipy10

回答

9

由于您使用的MVVM模式,你可以声明这样的视图模式:

public class MyViewModel 
{ 
    public ObservableCollection<Prototype> Items { ... } 
    public Prototype SelectedItem SelectedItem { ... } 
} 

后,您DataGrid中,你可以声明这样绑定:

<DataGrid ItemSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}"... /> 

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

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