【问题标题】:Problems refreshing a Silverlight DataGrid刷新 Silverlight DataGrid 的问题
【发布时间】:2011-09-21 21:31:32
【问题描述】:

我在使用具有可观察集合的 Silverlight 数据网格时遇到问题。我创建了一个 Silverlight 数据网格,从 WCF RIA 服务填充了一个可观察的集合,并将一个集合绑定到网格。它第一次工作正常,但是当我更改项目源内容时,网格中的数据不会刷新。当我双击数据网格单元格时,会显示内容。我可能缺少一些基本的属性设置。任何人都可以帮忙吗?

示例代码:

 App.BPIContext.Load(App.BPIContext.GetWellFieldListValuesQuery()).Completed += DataSource_WellFieldDataListValueLoadComplete;


ObservableCollection<ScheduleWellCustomFields> _userWellCustomFields = new ObservableCollection<ScheduleWellCustomFields>();

    void DataSource_WellCustomFieldsLoadComplete(object sender, EventArgs e)
    {
        _userWellCustomFields.Clear();
        App.BPIContext.ScheduleWellCustomFields.ToList().ForEach(c => _userWellCustomFields.Add(c));
        this.dtGridDrillingEngineer.ItemsSource = _userWellCustomFields;
    }

【问题讨论】:

  • 您是仅更改了 ObservableCollection 的内容(即添加、删除)还是在数据网格上设置了 ItemsSource 属性?也许你会期望你的数据发生变化。确保在这种情况下抛出 PropertyChanged。
  • 我同意 Joachim Kerschbaumer 的观点,是否在 ScheduleWellCustomFields 的属性中设置了 NotifyPropertyChanged?

标签: silverlight datagrid


【解决方案1】:

尝试在his.dtGridDrillingEngineer.ItemsSource = _userWellCustomFields;之前添加this.dtGridDrillingEngineer.ItemsSource = null;

【讨论】:

  • 我的问题是控件在最初使用时不会重新绘制。
【解决方案2】:

获取绑定对象并强制刷新:

        var bindingSource = TheDataGrid.GetBindingExpression(DataGrid.ItemsSourceProperty);
        bindingSource.UpdateSource();

【讨论】:

  • @Jordan 这不是问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
相关资源
最近更新 更多