WPF MVVM Light не может инициировать событие DataGrid AutogeneratingColumn для динамического управления столбцами

Я хочу динамически управлять столбцами Datagrid, которые связаны с элементом EF и должны отображать только столбцы, выбранные из ListBox.

Я использую инструментарий MVVM Light, и когда я пытаюсь использовать и запускать событие AutoGeneratingColumns, оно не работает. Он никогда не срабатывает, даже на первом поколении DataGrid.

Это мой код модели просмотра:

 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, которое запускало бы это событие для обновления DataGrid, когда пользователь изменил поля, которые он выбрал в ListBox.

Спасибо за вашу помощь !

EDIT: Конечно, я объявляю свою команду в конструкторе моей виртуальной машины:

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

person RizzCandy    schedule 11.05.2016    source источник


Ответы (1)


Я сам решил проблему, это была синтаксическая ошибка в «columnS», которая должна была быть столбцом в моем xaml...

Событие срабатывает корректно.

person RizzCandy    schedule 11.05.2016