在用C#編寫和Xamarin形式的程序(但這個問題更多的是基於MVVM)如何通知其他屬性和命令,我有一個項目一個ObservableCollection:使用MVVM,當集合被修改
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框架。
告訴我,請你試着完成什麼?爲什麼你需要按鈕和標籤監聽收藏改變? –
@YehorHromadskyi由於屏幕上的某些標籤顯示了更新項目列表時計算的信息。有些按鈕被命令禁用(使用CanExecute功能)。這些CanExecute功能還依賴於項目列表的內容。 – hugoterelle
您當前的方法是我知道的唯一選項,無需創建將依賴對象連接在一起的某種「更改級聯」框架。 –