wpf MVVM ObservableCollection <string>不更新视图

poc*_*oco 4 wpf observablecollection mvvm

我遇到的问题是我的ObservableCollection没有更新视图.我可以在OnPropertyChange之前放置一个断点,并且可以验证我的集合中是否有名称.

在我的模型中,我有一个事件,它会触发一个带有随机名称的List.

在我的视图模型中,我订阅了这个事件,我的事件处理程序执行此操作

void _manager_ProcessesChanged(List<string> n)
    {
        //create a new collection to hold current Ids
        ObservableCollection<string> names = new ObservableCollection<string>();

        //copy ids into our collection
        foreach (string name in n)
        {
            names.Add(name);
        }

        Names = names;
    }
Run Code Online (Sandbox Code Playgroud)

我的名字属性看起来像这样

ObservableCollection<string> _names = new ObservableCollection<string>();
public ObservableCollection<string> Names
    {
        get { return _names; }
        set
        {
            _names = value;
           OnPropertyChanged("Names");
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的观点绑定看起来像这样

<Window.DataContext>
    <vm:MainWindowViewModel/>
</Window.DataContext>
<Grid>
    <ListBox ItemsSource="{Binding Path=Names}"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

如果我改变了收集<string><int>它似乎做工精细..我失去了什么?

mig*_*uel 5

如果重新实例化ObservableCollection,您将失去对集合的绑定.

您应该.Clear(...)和.Add(...)项目,您还应该只将ObservableCollection名称更改为自动属性.这里不需要调用OnPropertyChanged,因为它是由你的类型处理的.