我是silverlight开发的新手,遇到过以下情况:
我有一个绑定到域DataSource的DataGrid。偶尔会通过外部实体对数据进行更新。随后,通过Clear()和Load()重新加载DataSource。
问题是,当这样做时,网格中的数据不会刷新,除非其中一个更改的字段是键的一部分。否则,将显示该实体的先前数据的缓存版本。
我可以通过向返回的数据集添加时间戳来解决这个问题,并使其成为键的一部分,但在我看来,这是一个不应该有必要的黑客攻击。刷新数据的正确方法是什么?
发布于 2013-09-15 19:30:17
我希望你遵循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));
}
}
}如果它不起作用,请告诉我。
https://stackoverflow.com/questions/18790543
复制相似问题