9

インターネットで見つけたこのコードを使用して、チェックボックスが実装された 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を使用しています。

4

1 に答える 1

13

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);
于 2012-06-28T08:44:56.740 に答える