1

DatagridEF 要素に関連付けられているの列を動的に管理したいので、から選択された列のみを表示する必要がありますListBox

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

これは私のviewmodelコードです:

 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;
            }
        }

そして、これは私のビューのxamlコードですDataGrid:

 <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このイベントをトリガーして を更新するを使用したいと思います。DataGridListBox

ご協力いただきありがとうございます !

編集:もちろん、VM のコンストラクターでコマンドを宣言します。

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

1 に答える 1

1

私は自分で問題を解決しました.xamlの列であるはずの「columnS」の構文エラーでした...

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

于 2016-05-11T13:43:00.653 に答える