MvxObservableCollection 不更新 UI

MvxObservableCollection does not update the UI

我有一个 MvxListView,它有一个 MvxObservableCollection 作为它的 ItemsSource:

View.xml

...
            <Mvx.MvxListView
                android:layout_width="fill_parent"
                android:layout_weight="6"
                android:layout_height="wrap_content"
                android:divider="@null"
                local:MvxItemTemplate="@layout/navigationmenuitemrow"
                local:MvxBind="ItemsSource MenuItems; ItemClick NavigateCommand"/>
...

ViewModel.cs

...
private MvxObservableCollection<NavigationItemViewModel> _menuItems = new MvxObservableCollection<NavigationItemViewModel>();

        public MvxObservableCollection<NavigationItemViewModel> MenuItems
        {
            get => _menuItems;
            set
            {
                _menuItems = value;
                RaisePropertyChanged(() => MenuItems);
            }
        }
...

我的 NavigationItemViewModel 如下所示:

    public class NavigationItemViewModel : MvxNotifyPropertyChanged
    {
        public string NavigationCode { get; set; }

        public string DisplayText { get; set; }

        public string Selector { get; set; }

    }

当我使用 MenuItems 的数据初始化 ViewModel 时,我能够看到视图中的所有项目。但是,如果我从列表中删除所有条目并用新条目替换它们,视图不会更新,直到我再次触摸屏幕。我正在删除这样的条目:

MvxObservableCollection<NavigationItemViewModel> tmpList = new MvxObservableCollection<NavigationItemViewModel>();
foreach (var navigationMenuItem in _navigationMenu.ChildNodes)
{
    tmpList.Add(Map(navigationMenuItem));
}
MenuItems = tmpList;

我之前也试过这个:

MenuItems.Clear();
foreach (var navigationMenuItem in _navigationMenu.ChildNodes)
{
    MenuItems.Add(Map(navigationMenuItem));
}

这可能是什么原因造成的?任何帮助将不胜感激!

好吧,我找到了问题的根源:

我没有在构造函数中将 MvxObservableCollection 设置为新的 MvxObservableCollection,而是在 Initialize 方法中设置,这导致了此行为。因此,绑定可能不会因更改而持续。