【问题标题】:changing datasource of datagrid更改数据网格的数据源
【发布时间】:2014-08-02 20:41:06
【问题描述】:

我尝试了很长时间来解决这个问题:

我使用带有 4 个“级联”数据网格的窗口。意味着,当更改第一个数据网格的选定项时,所有“后续”数据网格都会更改其完整内容。

因此我使用类似的东西

ObservableCollection<LocalShape> shapeList = new ObservableCollection<LocalShape>();

作为数据源,在哪里

    struct LocalShape
    {
        public string shapeName { set; get; }
        public System.Windows.Media.ImageSource shapePicture { set; get; }
    };

是我收藏的一个例子。

为了更改内容我尝试使用 shapeList.Clear() 并得到一个错误,不明白为什么。

【问题讨论】:

  • 您能提供错误的详细信息吗?
  • 在英语中会类似于“索引超出范围”
  • 这表明您可能需要在清除集合之前将所选项目设置为空
  • datagridShape.SelectedIndex = -1;形状列表.清除();到达第一行时已经给我一个错误
  • kidshaw,你帮我解决了问题!您给了我正确的提示,但我没有意识到我遇到了 SelectionChanged 事件,在该事件中我对 selectedItem (现在为空)执行了一些操作。现在可以了,谢谢!

标签: c# wpf datagrid


【解决方案1】:

当您绑定到集合和选定项时,选定项的值必须在您的集合中。

如果您更改您的集合并且所选项目不再是其中的一部分,则当他的控件尝试更新到新集合时,它正在寻找使所选项目脱颖而出。如果它没有找到它,你会得到一个异常。

是集合的变化导致了这个敲异常。在更改集合之前,首先测试所选项目是否存在于新集合中,如果不存在,则将所选项目设置为null。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 2013-05-22
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    相关资源
    最近更新 更多