wpf MVVM 可观察集合<string>不更新视图



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

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

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

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

我的"名称"属性如下所示

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

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

<Window.DataContext>
    <vm:MainWindowViewModel/>
</Window.DataContext>
<Grid>
    <ListBox ItemsSource="{Binding Path=Names}"/>
</Grid>

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

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

你应该.清除(...)和 .添加(...)项,您还应该将ObservableCollection Names更改为auto属性。 无需在此处调用OnPropertyChanged,因为它由类型为您处理。

我也遇到了这个问题。不确定这是否是理想的解决方案(当然看起来不像),但这对我有用

void _manager_ProcessesChanged(List<string> n)
{
    Names.Clear();
    //copy ids into our collection
    foreach (string name in n)
    {
        Names.Add(name);
    }
}

相关内容

  • 没有找到相关文章

最新更新