gpt4 book ai didi

wpf MVVM ObservableCollection 不更新 View

转载 作者:行者123 更新时间:2023-12-04 22:14:23 27 4
gpt4 key购买 nike

我有一个问题,我的 ObservableCollection 没有更新 View 。我可以在 OnPropertyChange 之前放置一个断点,并且可以验证我的集合中是否包含名称。

在我的模型中,我有一个事件会触发一个包含随机名称的列表。

在我的 View 模型中,我订阅了此事件,而我的事件处理程序执行此操作

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;
}

我的 Names 属性看起来像这样
ObservableCollection<string> _names = new ObservableCollection<string>();
public ObservableCollection<string> Names
{
get { return _names; }
set
{
_names = value;
OnPropertyChanged("Names");
}
}

我的 View 绑定(bind)看起来像这样
<Window.DataContext>
<vm:MainWindowViewModel/>
</Window.DataContext>
<Grid>
<ListBox ItemsSource="{Binding Path=Names}"/>
</Grid>

如果我更改 <string> 的集合至 <int>它似乎工作正常..我错过了什么?

最佳答案

如果您重新实例化 ObservableCollection,您将失去与集合的绑定(bind)。

您应该 .Clear(...) 和 .Add(...) 项目,您还应该将 ObservableCollection Names 更改为自动属性。无需在此处调用 OnPropertyChanged,因为它由您的类型处理。

关于wpf MVVM ObservableCollection<string> 不更新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5999436/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com