2016-05-06 6 views
0

に結合を選択します。チェックボックスをクリックすると、すべてのチェックボックスがチェックされ、チェックを外すとその逆が実行されます。 しかし、選択したアイテムをフェッチしてビューモデルにバインドすることができません。は、すべてのチェックボックスが、私はMVVMパターンを使用してWPFのデータグリッドのヘッダーにあるチェックボックス「すべて選択」に取り組んでいますMVVM

私のコードは、この

<DataGrid Grid.Row="0" Background="LightGray" CanUserAddRows="False" AutoGenerateColumns="False" HorizontalAlignment="Left" Name="dataGridCustomers" ItemsSource="{Binding Path=UsecaseListItems}" CanUserResizeRows="False"> 
     <DataGrid.Columns> 
      <DataGridTemplateColumn > 
       <DataGridTemplateColumn.Header> 
        <CheckBox x:Name="headerCheckBox" IsChecked="{Binding Path=MainWindowViewModel.AllSelected, Mode=TwoWay, 
       UpdateSourceTrigger=PropertyChanged}" Command="{Binding DoStuffCommand}" CommandParameter="{Binding ElementName=UserCaseListControl}"/> 
       </DataGridTemplateColumn.Header> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <CheckBox Name="chkSelectAll" HorizontalAlignment="Center" IsChecked="{Binding IsChecked, ElementName=headerCheckBox, Mode=OneWay}" /> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
      <DataGridTextColumn Binding="{Binding Path=UsecaseName}" Header="UsecaseName" IsReadOnly="True" > 
       <DataGridColumn.HeaderStyle> 
        <Style TargetType="DataGridColumnHeader"> 
        <Setter Property="FontWeight" Value="Bold"/> 
        </Style> 
       </DataGridColumn.HeaderStyle> 
      </DataGridTextColumn> 

ViewModelに似ていることのようである:あなたのコードでは

private bool _IsSelected; 
    public bool IsSelected 
    { 
     get { return _IsSelected; } 
     set 
     { 
      _IsSelected = value; 
      OnPropertyChanged("IsSelected"); 
     } 
    } 

    private bool _AllSelected; 
    public bool AllSelected 
    { 
     get { return _AllSelected; } 
     set 
     { 
      _AllSelected = value; 
      foreach (var reportListItemModel in UsecaseListItems) 
      { 
       reportListItemModel.IsSelected = this._AllSelected; 
       OnPropertyChanged("IsSelected"); 
      } 
      OnPropertyChanged("AllSelected"); 

     } 
    } 


    private ObservableCollection<UseCase> _usecaseListItems = new ObservableCollection<UseCase>(); 
    public ObservableCollection<UseCase> UsecaseListItems 
    { 
     get { return _usecaseListItems; } 
     set { 
      _usecaseListItems = value; 
      OnPropertyChanged("UsecaseListItems"); 
     } 
    } 
+0

場所選択した項目をバインドするコードはありますか?あなたがここで欲しいのは何ですか? – Muds

+0

Iはslectedチェックボックスの値は、ビューモデル –

+0

UsecaseListItems.Where(P => p.IsSelected)内の文字列のIEnumerableをに格納されたいです。 ---これ以上のものですか? – Muds

答えて

0

は、選択した項目のない直接的な結合は存在しません。すべてのチェックボックスがheaderCheckBox.IsCheckedにバインドされています。

あなたは、あなたの代わりにUsecaseListItem.IsSelectedに結合し、及びにselectAllを実行するための別の方法を見つけることができる:

例えばObservableObjectを継承UseCaseを定義し、各項目のIsSelectedプロパティを変更するにはAllSelectedであなたの上記のコードを使用します。

またはあなたのheaderCheckBoxにコマンド(for example)を使用します。

関連する問題