代码之家  ›  专栏  ›  技术社区  ›  Loading

ObservableCollection不更新用户界面[重复]

  •  -2
  • Loading  · 技术社区  · 6 年前

    启动时,我将一个可观察集合绑定到菜单:

    Menu.ItemsSource = _manager.Selection;
    

    此菜单正确显示集合中的所有对象。

    private void OnBoxClick(object sender, RoutedEventArgs e)
        {
            _manager.Selection = _manager.GetNewSelection();
            PropertyChanged?.Invoke(this, new CollectionChangeEventArgs(CollectionChangeAction.Refresh, _manager.Selection));
        }
    
        public event CollectionChangeEventHandler PropertyChanged;
    

    但用户界面仍在显示以前的情况。。

    少了什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   mm8    6 年前

    你要么重新设置 Menu.ItemsSource 财产 _manager.GetNewSelection() _manager.Selection . 设置 _经理选择 ObservableCollection<T> 不会影响菜单的 ItemsSource 财产。

    ,你最好这样做:

    private void OnBoxClick(object sender, RoutedEventArgs e)
    {
        Menu.ItemsSource = _manager.GetNewSelection();
    }
    

    然后不管是不是 _manager.GetNewSelection 返回 ObservableCollection 或任何其他类型的 IEnumerable 在添加或删除项时不提供通知的。