TabControl Region
シェルビュー内でプリズムを使用しています。
それぞれにとTabItem
が含まれます。AView
AViewModel
のプロパティプロパティTabItem
を使用して、現在アクティブな を特定できます。IsActive
AViewModel
IsActive
プロパティはtrue
、現在選択されている TabItem に対してのみに設定されます。
ビュー内にボタンがありShell
、ビュー内のロジックを実行しますTabItems
。
現在のアクティブに応じてボタンを有効にして無効にする正しい方法は何ですかTabItem
(セットはまたはに実行command
できます)true
false
、アクティブなビューに対してのみロジックを実行します。他のビューに配置されたボタンから?
command
を作成して を実行し、からcomposite command
にコマンドを登録し、内のボタンを にバインドすることができました。AViewModel
composite command
shell
composite command
このアプローチの問題点は、いずれかのコマンドが1 つ(アクティブ)false
を除くすべてを返した場合、どのコマンドも実行されないことです。TabItem
CompositeCommand クラスは、子コマンド (DelegateCommand インスタンス) のリストを維持します。CompositeCommand クラスの Execute メソッドは、各子コマンドの Execute メソッドを順番に呼び出すだけです。同様に、CanExecute メソッドは各子コマンドの CanExecute メソッドを呼び出しますが、実行できない子コマンドがある場合、CanExecute メソッドは false を返します。つまり、デフォルトでは、CompositeCommand は、すべての子コマンドを実行できる場合にのみ実行できます。 ソース