ビュー モデルのコレクションにバインドされている ListView があります。Item テンプレートには、ビュー モデルのコマンドにバインドされたボタンが含まれています。ListView の ItemsSource というプロパティを設定すると、ビューモデルごとに RaiseCanExecuteChanged を呼び出します。
public BindingList<IVehicleViewModel> Vehicles
{
get { return _vehicles; }
set
{
if(_vehicles == value) return;
_vehicles = value;
OnPropertyChanged("Vehicles");
RaiseCanExecuteChangedEvents();
}
}
すべてのビュー モデルで CanExecute に対して true が返されることを確認したにもかかわらず、ボタンはグレー表示されます。私が気付いた唯一のことは、リストビューが既にレンダリングされているときに RaiseCanExecuteChanged を呼び出すと、すべてが期待どおりに機能し、リストビューがレンダリングされる前にそれを呼び出してから、並べ替えられたアイテムをスクロールすることです。