如何强制绑定数据网格刷新内容

本文关键字:网格 刷新 新内容 数据网 数据 何强制 绑定 | 更新日期: 2023-09-27 18:31:23

我对 silverlight 开发相对较新,遇到过以下情况:

我有一个绑定到域数据源的数据网格。 有时会通过外部实体对数据进行更新。 数据源随后通过 Clear() 后跟 Load() 重新加载。

问题是,完成此操作后,网格中的数据不会刷新,除非更改的字段之一是键的一部分。 否则,将显示实体以前数据的缓存版本。

我能够通过向返回的数据集添加时间戳并将其作为密钥的一部分来解决此问题,但在我看来,这是一个不必要的黑客。 刷新数据的正确方法是什么?

如何强制绑定数据网格刷新内容

我希望

你遵循MVVm结构。

将列表更改为可观察的集合,我希望您从 xaml 绑定它

以下是可能适合您的代码。

    public partial class MainPage : UserControl, INotifyPropertyChanged
{
    private ObservableCollection<Customer> _MyList = 
        new ObservableCollection<Customer>();
    public ObservableCollection<Customer> MyList
    {
        get { return _MyList; }  
    } 
    public MainPage()
    {                      
        InitializeComponent();
        this.DataContext = this;
        MyList.Add(new Customer{ _nome = "Josimari", _idade = "29"});
        MyList.Add(new Customer{_nome = "Wesley", _idade = "26"});
        MyList.Add(new Customer{_nome = "Renato",_idade = "31"});
        OnPropertyChanged("MyList"); // This only works if you use bindings.
    }
    private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
    {
        MyList.Add(new Customer{_nome = "Maiara",_idade = "18"});   
        OnPropertyChanged("MyList"); // This only works if you use bindings.
    }
    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged( string propertyName )
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    } 
}

如果它不起作用,请告诉我。