我对 Silverlight 开发比较陌生,遇到过以下情况:
我有一个绑定到域数据源的 DataGrid。有时会通过外部实体对数据进行更新。随后通过 Clear() 和 Load() 重新加载 DataSource。
问题是,完成此操作后,网格中的数据不会刷新,除非更改的字段之一是键的一部分。否则,似乎会显示实体先前数据的缓存版本。
我可以通过向返回的数据集添加时间戳并将其作为密钥的一部分来解决此问题,但在我看来,这是一个不必要的 hack。刷新数据的正确方法是什么?
我对 Silverlight 开发比较陌生,遇到过以下情况:
我有一个绑定到域数据源的 DataGrid。有时会通过外部实体对数据进行更新。随后通过 Clear() 和 Load() 重新加载 DataSource。
问题是,完成此操作后,网格中的数据不会刷新,除非更改的字段之一是键的一部分。否则,似乎会显示实体先前数据的缓存版本。
我可以通过向返回的数据集添加时间戳并将其作为密钥的一部分来解决此问题,但在我看来,这是一个不必要的 hack。刷新数据的正确方法是什么?
我希望你遵循 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));
}
}
}
让我知道它是否不起作用。