2016-05-11 15 views
0

の列を動的に管理したい場合は、ListBoxから選択した列のみを表示する必要があります。WPF MVVM Light列を動的に管理するためにDataGrid AutogeneratingColumnイベントをトリガーできません

MVVM Lightツールキットを使用しています。AutoGeneratingColumnsイベントを使用して起動しようとすると機能しません。 DataGridの第1世代でさえ、決して誘発することはありません。

private void dgArticles_ColumnGeneration(DataGridAutoGeneratingColumnEventArgs args) 
     { 
      string headername = args.Column.Header.ToString(); 

      foreach (Champ c in LstSelected) 
      { 
       if (headername != c.Libelle) 
       { 
        args.Cancel = true; 
       } 
       args.Column.Header = c.Libelle; 
      } 
     } 

そして、これがDataGridのための私の見解のXAMLコードです:

これは私のviewmodelコードで、最終的な目的に

<DataGrid Name="dgArticles" 
       IsEnabled="True" 
       Grid.Column="2" 
       Grid.Row="1" 
       AutoGenerateColumns="True" 
       ItemsSource="{Binding LstArticles}"> 
     <i:Interaction.Triggers> 
      <i:EventTrigger EventName="AutoGeneratingColumn"> 
       <Command:EventToCommand Command="{Binding GenerateColumns}" PassEventArgsToCommand="True"/> 
      </i:EventTrigger> 
     </i:Interaction.Triggers> 
    </DataGrid> 

、私はトリガーするButtonを使用したいですDataGridをリフレッシュするこのイベントは、ユーザーがListBoxで選択したフィールドを変更したときに発生します。

ありがとうございました!

EDIT:もちろん私は私のVMのコンストラクタで私のコマンドを宣言します。

public ExportViewModel() 
     { 
      GenerateColumns = new RelayCommand<DataGridAutoGeneratingColumnEventArgs>(dgArticles_ColumnGeneration); 
      LstSelected = new ObservableCollection<Champ>(); 
      LstArticles = exp.ListerArticles(); 
     } 

答えて

0

私はそれが列されている必要があります「列」の構文エラーだった、問題を自分で解決してきました私のxamlでは...

イベントが正しくトリガされます。

関連する問題