0
我有一個綁定到視圖模型集合的ListView。項目模板包含一個綁定到視圖模型上的命令的按鈕。當我設置ListView的ItemsSource的屬性時,我爲每個viewmodel調用RaiseCanExecuteChanged。調用RaiseCanExecuteChanged後ListView不更新
public BindingList<IVehicleViewModel> Vehicles
{
get { return _vehicles; }
set
{
if(_vehicles == value) return;
_vehicles = value;
OnPropertyChanged("Vehicles");
RaiseCanExecuteChangedEvents();
}
}
儘管我已驗證返回true爲CanExecute上的所有視圖模型的按鈕顯示爲灰色。 我注意到的唯一的事情是,如果我在調用ListView時調用RaiseCanExecuteChanged,那麼所有東西都按預期工作,如果在listview被渲染之前調用它,然後滾動它們自己排列的項目。
我創建了一個調用CommandManager.InvalidateRequerySuggested()的命令;它似乎根本不會調用CanExecute?我已經添加了行Thread.Sleep(1000);我的代理命令
。這似乎解決了這個問題。似乎我懷疑你必須在屏幕上呈現控件後調用RaiseCanExecuteChangedEvents()。顯然這不是解決問題的可接受的方式。 – Russ 2010-01-25 16:27:12