【问题标题】:WPF Toolkit datagrid /doesn’t refresh dataWPF 工具包数据网格/不刷新数据
【发布时间】:2011-06-15 21:14:59
【问题描述】:

H 我使用 SQL CE 和 LINQ。我在 WPF Toolkit 的 Datagrid 控件的 ItemSource 上绑定属性 typeof Table。

类似的东西。

    public Table<TestNick>  MySource
    {
        get { return _tab; }
        set
        {
            _tab = value;
            NotifyPropertyChanged("MySource");

        }
    }


    <Controls:DataGrid Name="Dg" 
                       ItemsSource="{Binding Path=MySource, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
                       Grid.Row="0"/>

我使用 LINQ 从数据库中检索数据:

        const string connStr = @"Spiri_SQL_CE_DB.sdf";
        _dc = new Spiri_SQL_CE_DB(connStr);
        MySource = _dc.TestNick;

如果我在最后一行添加断点,我会看到表 TestNick 中的所有值,但它不会在 DataGrid 中加载这些数据。

什么不好?

编辑:

我在后面的代码中检查了DataGrid控件的ItemSource,项目源是正确的,但我在DataGrid(视图)中看到“旧数据”。

所以绑定一定要正确,问题是DataGrid控件没有刷新数据。

【问题讨论】:

  • 只是猜测,输出窗口中是否存在BindingExpression错误?
  • 绑定没问题,DataGrid 的ItemSource 属性包含了很好的数据,但是在视图中我看到的是旧数据。
  • 您可以删除 UpdateSourceTrigger=PropertyChanged,因为它不需要

标签: wpf linq linq-to-sql datagrid toolkit


【解决方案1】:
  • 确保 datagrid autogeneratecolumns 为真
  • 运行时检查输出窗口是否存在任何绑定问题
  • 另一个技巧是在视图上放置一个按钮并在单击该按钮时编写一个代码隐藏函数来调试 datagrid itemsource 是什么,如果它为空尝试调用 viewModel/Model 的 getDatagridData 函数,然后查看它是否加载,在如果它加载,则意味着您的 NotifyPropertyChanged 尚未正常运行

【讨论】:

  • Oki,问题是 DataGrid 的 ItemSource 是正确的,但在视图中我没有看到实际数据。我看到了旧数据。
  • 如果您在视图上添加按钮(仅出于调试目的)并在后面编写代码以调用 getData 函数,如果您在此之后看到新数据。这意味着您的 NotifyPropertyChange 不起作用。您还可以在 NotifyPropertyChange 中放置一个断点。你也在使用 ObservableCollection 吗?
  • ObservableCollection 无关紧要,因为 OP 正在替换引用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
  • 2010-12-13
  • 1970-01-01
  • 2010-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多