在用 C# 和 Xamarin Forms 编写的程序中(但这个问题更多地基于 MVVM),我有一个 ObservableCollection 项目:
ObserbableCollection<Item> Items { get; set; }
当此集合更改时(向集合添加或删除项目),我需要通知其他属性和命令,因为它们都绑定到 XAML 屏幕上的控件(主要是按钮和标签)。
我找到的唯一解决方案是这样的:
Items.CollectionChanged += (sender, args) =>
{
((Command)OnHoldCommand).ChangeCanExecute();
((Command)CancelSaleCommand).ChangeCanExecute();
((Command)ValidateTakeAwayCommand).ChangeCanExecute();
((Command)ValidateEatInCommand).ChangeCanExecute();
RaisePropertyChanged(() => TotalItems);
RaisePropertyChanged(() => TotalAmount);
};
您认为还有其他解决方案吗?也许使用 Fody.PropertyChanged?
我使用 FreshMvvm 作为 Xamarin Forms 之上的 Mvvm 框架。