問題タブ [delegatecommand]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - DelegateCommand が「指定されたキャストは無効です」をスローします
パラメータとして bool を指定して PRISM delegatecommand を使用したいと考えています。これは関連するコードです:
ブレークポイントを設定すると、CanExecuteChangeZoomPan
ヒットすることはありません。問題は の後に発生しChangeZoomPanCommand.RaiseCanExecuteChanged()
ます。
これはスタックトレースです:
>
引数の型を文字列に変更すると、すべてが機能するようです。もちろん、それが私のxamlコマンドパラメータであるため、引数として「False」文字列を取得します。T に制限がないように見えるため、これがどの T でも機能しないのはなぜですか。T はオブジェクトまたは nullable でなければならないという難しい方法をすでに見つけましたが、nullable でさえ適合しないようです。ブール引数を使用する方法は?
ありがとう
wpf - Prism: RaiseCanExecuteChanged() を明示的に呼び出す必要があります
以下は、とデリゲートの両方をPrism.Wpf
持つ の非常に単純な例です。DelegateCommand
Execute
CanExecute
あるプロパティにCanExecute
依存するとします。Prismは、他の MVVM フレームワークのように、このプロパティが変更されたときに自動的に条件DelegateCommand
を再評価しないようです。代わりに、プロパティ セッターで RaiseCanExecuteChanged() を明示的に呼び出す必要があります。これにより、自明ではないビューモデルで多くの反復コードが発生します。CanExecute
RelayCommand
より良い方法はありますか?
ビューモデル:
ビュー:
c# - PRISM (ViewModel): コマンドが同時に複数回実行されないようにする
同じコマンドが同時に複数回実行されないように、頻繁なユーザー ジェスチャを無効にしようとしています。
これが正しいかどうかはわかりません。
- やり過ぎですか
SemaphoreSlim
、それとも安全のためにそのままにしておくべきですか? ObservesCanExecute()
手動でフラグのオンとオフを切り替えているので必要ですか?- 同じビュー モデルにいくつかのコマンドがあり、それぞれに個別の CanExecute フラグがあります。あるコマンドを実行中に別のコマンドを有効にする必要がある場合にすぐに遭遇すると思います。
_semaphoreSlim
進行中のすべてのコマンドを保留しますか、それとも同じコマンドの複数の呼び出しを保留しますか?
wpf - WPF現在アクティブなタブアイテムのコマンドを実行する方法は?
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 は、すべての子コマンドを実行できる場合にのみ実行できます。 ソース