【问题标题】:Can not access datagrid.itemsSource in event handler combobox_selectionChanged?无法在事件处理程序 combobox_selectionChanged 中访问 datagrid.itemsSource?
【发布时间】:2017-08-04 07:20:18
【问题描述】:

我正在开发一个 wpf 应用程序,其中当用户对组合框执行选择更改操作时,会触发选择更改事件,但是在我更新 datagrid.itemsSource 时的事件处理程序中,显示错误以使用新关键字要创建对象,通过断点我已经看到在事件处理程序内部数据网格对象本身为空,但在 MainWindow 函数中它不是空的。为什么会这样?

    private void majorkeys_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {           
        minordata.ItemsSource = ReadLibrary.get_minor_records(majorkeys.SelectedValue.ToString(), minorkeys.SelectedValue.ToString());
    }

【问题讨论】:

  • 这可能是因为在 InitializeComponent 期间触发了 SelectionChanged 事件,而 minordata 字段尚未设置。
  • 你做对了! @克莱门斯

标签: c# wpf datagrid eventhandler


【解决方案1】:

让我回答我自己的问题,问题是当组件初始化时,comboBox.selectedIndex 发生变化,因此当时触发了 comboBox_selectionChanged 事件,我的数据网格的 itemsSource 未填充,因此它为空。我通过检查数据网格的 itemsSource 是否为空来解决了这个问题。这是代码,

private void minorkeys_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (minordata != null)
        {
            minordata.ItemsSource = ReadLibrary.get_minor_records(majorkeys.SelectedValue.ToString(), minorkeys.SelectedValue.ToString());
        }
    }

耶! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2010-12-06
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    相关资源
    最近更新 更多