問題タブ [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持つ の非常に単純な例です。DelegateCommandExecuteCanExecute
あるプロパティにCanExecute依存するとします。Prismは、他の MVVM フレームワークのように、このプロパティが変更されたときに自動的に条件DelegateCommandを再評価しないようです。代わりに、プロパティ セッターで RaiseCanExecuteChanged() を明示的に呼び出す必要があります。これにより、自明ではないビューモデルで多くの反復コードが発生します。CanExecuteRelayCommand
より良い方法はありますか?
ビューモデル:
ビュー:
c# - PRISM (ViewModel): コマンドが同時に複数回実行されないようにする
同じコマンドが同時に複数回実行されないように、頻繁なユーザー ジェスチャを無効にしようとしています。
これが正しいかどうかはわかりません。
- やり過ぎですか
SemaphoreSlim、それとも安全のためにそのままにしておくべきですか? ObservesCanExecute()手動でフラグのオンとオフを切り替えているので必要ですか?- 同じビュー モデルにいくつかのコマンドがあり、それぞれに個別の CanExecute フラグがあります。あるコマンドを実行中に別のコマンドを有効にする必要がある場合にすぐに遭遇すると思います。
_semaphoreSlim進行中のすべてのコマンドを保留しますか、それとも同じコマンドの複数の呼び出しを保留しますか?
wpf - WPF現在アクティブなタブアイテムのコマンドを実行する方法は?
TabControl Regionシェルビュー内でプリズムを使用しています。
それぞれにとTabItemが含まれます。AViewAViewModel
のプロパティプロパティTabItemを使用して、現在アクティブな を特定できます。IsActiveAViewModel
IsActiveプロパティはtrue、現在選択されている TabItem に対してのみに設定されます。
ビュー内にボタンがありShell、ビュー内のロジックを実行しますTabItems。
現在のアクティブに応じてボタンを有効にして無効にする正しい方法は何ですかTabItem(セットはまたはに実行commandできます)truefalse、アクティブなビューに対してのみロジックを実行します。他のビューに配置されたボタンから?
commandを作成して を実行し、からcomposite commandにコマンドを登録し、内のボタンを にバインドすることができました。AViewModelcomposite commandshellcomposite command
このアプローチの問題点は、いずれかのコマンドが1 つ(アクティブ)falseを除くすべてを返した場合、どのコマンドも実行されないことです。TabItem
CompositeCommand クラスは、子コマンド (DelegateCommand インスタンス) のリストを維持します。CompositeCommand クラスの Execute メソッドは、各子コマンドの Execute メソッドを順番に呼び出すだけです。同様に、CanExecute メソッドは各子コマンドの CanExecute メソッドを呼び出しますが、実行できない子コマンドがある場合、CanExecute メソッドは false を返します。つまり、デフォルトでは、CompositeCommand は、すべての子コマンドを実行できる場合にのみ実行できます。 ソース