WPF MVVM Light 无法触发 DataGrid AutogeneratingColumn 事件动态管理列
WPF MVVM Light Cannot trigger DataGrid AutogeneratingColumn event to dynamically manage columns
我想动态管理绑定到 EF 元素的 Datagrid
的列,并且应该只显示从 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
当用户修改他在 ListBox
中选择的字段时触发此事件刷新 DataGrid
.
感谢您的帮助!
编辑: 当然,我在 VM 的构造函数中声明了我的命令:
public ExportViewModel()
{
GenerateColumns = new RelayCommand<DataGridAutoGeneratingColumnEventArgs>(dgArticles_ColumnGeneration);
LstSelected = new ObservableCollection<Champ>();
LstArticles = exp.ListerArticles();
}
我自己解决了这个问题,这是 "columnS" 上的语法错误,应该是我的 xaml...
中的列
事件正确触发。
我想动态管理绑定到 EF 元素的 Datagrid
的列,并且应该只显示从 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
当用户修改他在 ListBox
中选择的字段时触发此事件刷新 DataGrid
.
感谢您的帮助!
编辑: 当然,我在 VM 的构造函数中声明了我的命令:
public ExportViewModel()
{
GenerateColumns = new RelayCommand<DataGridAutoGeneratingColumnEventArgs>(dgArticles_ColumnGeneration);
LstSelected = new ObservableCollection<Champ>();
LstArticles = exp.ListerArticles();
}
我自己解决了这个问题,这是 "columnS" 上的语法错误,应该是我的 xaml...
中的列事件正确触发。