Ada*_*abo 8 c# wpf binding observablecollection
public class Alpha
{
    public ObservableCollection<Beta> Items { get; set; }
    public Alpha()
    {
        Items = new ObservableCollection<Beta>();
    }
    public void DoSomething()
    {
        Items = GetNewItems();  // whenever I do this, Items gets a new referene, 
                                // so every WPF binding (e.g. datagrids) are broken
    }
    public ObservableCollection<Beta> GetNewItems()
    {
         var ret = new ObservableCollection<Beta>();
         // some logic for getting some items from somewhere, and populating ret
         return ret;
    }
}
如何Items用GetNewItems()不带的返回值替换整个内容:
打破绑定.
必须遍历项目并将它们一个一个地复制到另一个集合中?
你有一些选择:
BindingOperations.EnableCollectionSynchronization.一起修改.推荐的
关于你的问题,数字2和3转换为清除现有项目(Clear()),然后添加(Add())由你想要的任何方法返回的项目 - 参见#3的示例.关键是清算和所有添加必须使用Dispatcher(2)或通过调用完成BindingOperations.EnableCollectionSynchronization.祝好运!
参考:Reed Copsey答案 - StackOverflow
| 归档时间: | 
 | 
| 查看次数: | 7284 次 | 
| 最近记录: |