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>它似乎做工精细..我失去了什么?
如果重新实例化ObservableCollection,您将失去对集合的绑定.
您应该.Clear(...)和.Add(...)项目,您还应该只将ObservableCollection名称更改为自动属性.这里不需要调用OnPropertyChanged,因为它是由你的类型处理的.