相关疑难解决方法(0)

ObservableCollection未更新View

我刚开始使用MVVM并遇到了障碍,我希望有人可以帮助我.我正在尝试使用2个列表框创建一个简单的视图.第一个列表框中的选择将填充第二个列表框.我创建了一个类,用于存储我想要绑定的信息.

MyObject类(Observable Object只是一个实现INotifyPopertyChanged的基类)

public class MyObject : ObservableObject
{
    String _name = String.Empty;
    ObservableCollection<MyObject> _subcategories;

    public ObservableCollection<MyObject> SubCategories
    {
        get { return _subcategories; }

        set
        {
            _subcategories = value;
            RaisePropertyChanged("SubCategories");
        }
    }

    public String Name
    {
        get { return _name; }
        set
        {
            _name = value;
            RaisePropertyChanged("Name");
        }
    }


    public MyObject()
    {
        _subcategories = new ObservableCollection<EMSMenuItem>();
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的viewmodel中,我创建了两个ObservableCollections

public ObservableCollection<EMSMenuItem> Level1MenuItems { get; set; }
public ObservableCollection<EMSMenuItem> Level2MenuItems { get; set; }
Run Code Online (Sandbox Code Playgroud)

在我的ViewModel的构造函数中,我有:

this.Level1MenuItems = new ObservableCollection<EMSMenuItem>();
this.Level2MenuItems = …
Run Code Online (Sandbox Code Playgroud)

c# wpf observablecollection mvvm

12
推荐指数
2
解决办法
2万
查看次数

将整个ObservableCollection替换为另一个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;
    }
}
Run Code Online (Sandbox Code Playgroud)

如何ItemsGetNewItems()不带的返回值替换整个内容:

  1. 打破绑定.

  2. 必须遍历项目并将它们一个一个地复制到另一个集合中?

c# wpf binding observablecollection

8
推荐指数
1
解决办法
7284
查看次数

标签 统计

c# ×2

observablecollection ×2

wpf ×2

binding ×1

mvvm ×1