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
,
Спасибо за вашу помощь!
РЕДАКТИРОВАТЬ: Конечно, я объявляю свою команду в конструкторе моей виртуальной машины:
public ExportViewModel()
{
GenerateColumns = new RelayCommand<DataGridAutoGeneratingColumnEventArgs>(dgArticles_ColumnGeneration);
LstSelected = new ObservableCollection<Champ>();
LstArticles = exp.ListerArticles();
}
1 ответ
Я сам решил проблему, это была синтаксическая ошибка на "columnS", которая должна была быть column в моем xaml...
Событие срабатывает правильно.