【问题标题】:WPF MVVM Light Cannot trigger DataGrid AutogeneratingColumn event to dynamically manage columnsWPF MVVM Light 无法触发 DataGrid AutogeneratingColumn 事件来动态管理列
【发布时间】:2016-05-11 09:02:42
【问题描述】:

我想动态管理绑定到 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;
            }
        }

这是我对DataGrid 的看法 xaml 代码:

 <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

感谢您的帮助!

编辑:当然我在我的虚拟机的构造函数中声明了我的命令:

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

【问题讨论】:

    标签: wpf datagrid listbox mvvm-light autogeneratecolumn


    【解决方案1】:

    我自己解决了这个问题,“columnS”上的语法错误应该是我的 xaml 中的列...

    事件触发正确。

    【讨论】:

      猜你喜欢
      • 2011-04-22
      • 1970-01-01
      • 2011-03-05
      • 2021-01-28
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多