0

ビュー モデルのコレクションにバインドされている 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 を呼び出すと、すべてが期待どおりに機能し、リストビューがレンダリングされる前にそれを呼び出してから、並べ替えられたアイテムをスクロールすることです。

4

1 に答える 1

0

コマンドの実行可能性の再評価を強制する静的メソッドがあります (それは言葉ですか?)コマンドの結果のCommandManager.InvalidateRequerySuggested変更を反映するように UI の更新を確認したいときはいつでも呼び出してみてください。CanExecute

于 2010-01-25T10:02:48.700 に答える