問題タブ [routed-commands]

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.

0 投票する
3 に答える
1982 参照

c# - 手続き型コードから Execute を呼び出す前に、ICommand の CanExecute メソッドをチェックする必要がありますか?

XAML で s を使用する場合ICommand、WPF はCanExecuteメソッドを使用して、コマンドに関連付けられたコントロールを有効または無効にします。Executeしかし、手続き型コードから呼び出している場合はどうなるでしょうか? 最初CanExecuteにコマンドが実行できることを確認する必要がありますか、それともExecuteこのチェックを自分で処理する必要がありますか?

言い換えれば、これを行う必要があります:

またはこれだけ:

0 投票する
1 に答える
174 参照

wpf - CanExecute(または何か)をWPFにキャッシュしますか?

System.WebのCacheオブジェクトは、かなりおかしくなります。

CommandBinding.CanExecuteを次のように処理します。

私のシナリオでは、NotInsignificantRoutine()の戻り値は5秒のウィンドウ内で変化しません。WPFにキャッシュするための最良の方法は何でしょうか?System.Webをインポートしますか?

0 投票する
1 に答える
933 参照

silverlight-4.0 - Silverlight ICommandをどのように実行しますか?

これはとても基本的な質問ですが、私は尋ねなければなりません。

SLには、次のXAMLがあります。

そして、このコードの背後にあります:

しかし、ボタンをクリックしても、コマンドのExecute()は起動されません。

それにはトリックがありますか?

0 投票する
1 に答える
457 参照

wpf - ポップアップからルーティングされたイベント/コマンドをリッスンする

ポップアップを動的に作成するコントロールがあります。

ポップアップには、元のコントロールで反応したい、ルーティングされたイベント/コマンドを起動するコントロールが含まれています。元のコントロールは、ポップアップの配置ターゲットとして設定されます。

元のコントロールがバブル イベントを受け取ると思いますか? 別のビジュアル ツリーにあることはわかっていますが、プレースメント ターゲットに提供されるかどうかは疑問でした。私のコードからはそうではないようです。

誰でもこの状況を処理する方法を提案できますか? 別のビジュアル ツリー内のイベントへの応答。ポップアップのルートに配置され、元のビジュアル ツリーへの「ブリッジ」として機能するコントロールを記述できるかどうか疑問に思っていました。

どうもありがとう、

0 投票する
2 に答える
11810 参照

wpf - ApplicationCommandsをViewModelにバインドする方法は?

MVVM-Lightを使用していくつかのカスタムコマンドを正常に使用しましたが、アプリケーションがウィンドウレベルだけでなく、詳細なアイテムレベルでも標準のApplicationCommandsに応答するようにしたいです。

ノードをTreeViewコピーして貼り付けることができるようにしたいものがあります。各TreeViewItemには独自のViewModelがHierarchicalDataTemplatesあり、いくつかの異なるタイプがあるため、XAMLで表示されます。ViewModelクラスに、コピー、貼り付け、およびCanCopyとCanPasteのメソッドを実装しました。必要に応じて、これらを指すMVVM-Light RelayCommandsを簡単に実装できますが、それは正しくないようです。

メニュー、Ctrl+CおよびCtrl+V、または最終的にはコンテキストメニューを使用してコマンドにアクセスしたいと思います。また、TextBoxなど、UIの他の要素のコピー/貼り付け機能を壊したくありません。この目的には、組み込みのApplicationCommandsを使用するのが適切と思われます。ただし、これらの例はUserControlコードビハインドで処理されているだけです。私はUserControlを持っていません(または必要ありません)。また、MVVMに実際に続いているわけでもありません。

ビューモデル、つまりデータテンプレートにバインドApplicationCommand.Copyしてコマンドを実行する方法はありますか?ApplicationCommand.Paste

0 投票する
2 に答える
1199 参照

c# - コマンドの CanExecute メソッドが呼び出されますが、Execute メソッドは呼び出されません

コマンドをリボン コントロールのボタンにバインドしました。ボタンの CanExecute メソッドは期待どおりに呼び出されますが、ボタンをクリックしても Execute メソッドは呼び出されません。はプロパティを- 問題のボタンが有効でクリック可能に設定しますCanExecuteCanExecutetrue

他の誰かが以前にこの動作を見たことがありますか? もしそうなら、どうすればそれを修正できますか!

編集:

StaticCommands.ThisCommandRoutedCommandの入力ジェスチャを持つ ですF5

残念ながら、すべてが別のチームのライブラリにまとめられているため、xaml を投稿できません。今のところそれが正しいと思います。また、コマンドに関連付けられたキーボード ジェスチャ ( を押すF5) を使用すると、execute メソッドが呼び出されます。

例外はスローされず、出力ウィンドウにメッセージも表示されず、snoop はすべてが正しくバインドされていることを示します。私は本当に困惑しています。

0 投票する
1 に答える
942 参照

.net - カスタムWPFコマンド(RoutedUICommand)ハンドラーの実装コードを配置するのに最適な場所

WPFでは、カスタムコマンドにcommand_Executedやcommand_CanExecuteなどのイベントハンドラーがあります。ベストプラクティスは、実装ロジックを分離コードクラスに直接実装せず、上位レベルの実装ロジックへの関数呼び出しのみを含めることです。

カスタムコマンドを作成するときに、コマンドのハンドラー関数に関数呼び出しが1つしかない場合は、それをコードビハインドに直接配置するのは簡単ですが、複数の関数呼び出しがある場合、または関数呼び出しがそれに基づいて何かを返す場合はどうなりますかそのうちの決定が行われます(特に、コマンドを無効化/有効化するcommand_CanExecute関数の場合、コマンドをいつ有効化または無効化するかを決定する必要があります)。私が考えていた可能性は次のとおりです。保守性、コードのクリーンな維持、ソフトウェアエンジニアリングの原則、およびベストプラクティスの観点から、どれが最も適切ですか。

  1. すべての関数呼び出しと意思決定ステートメントをコードビハインド(command_executeまたはそのcommand_execute呼び出しのコードビハインドの一部の関数)に保持します。コードが単純であれば問題ありませんが、コードの背後に多くのハンドラーがあると、物事が醜くなります。ここには実装コードはなく、先に述べた意思決定コードのみがあります。

  2. コマンドを定義し、静的プロパティを介してアクセスできるようにするクラスに実装ロジックを保持します。これで、分離コード内のハンドラーは1つの関数呼び出しのみを持ち、必要に応じて戻り値を受け取ります。

  3. アプリケーションの実際の機能を実装する上位レベルのクラスに実装して、分離コードハンドラーが関数呼び出しを1つだけ持つようにします。これは最も理にかなっていますが、コマンドハンドラーが多くの異なる無関係なクラスからメソッドを呼び出さなければならない場合があり、そのロジックをどこに配置するかを決定するのが難しいため、このオプションは私の心に疑問を投げかけます。

  4. 私が逃した他のもの。

0 投票する
2 に答える
4121 参照

c# - パラメータ付きのRoutedCommand

RoutedCommandで遊んでいますが、 Executedメソッドがe.Parameterにパラメーターを含めるようにパラメーターを渡す方法を見つけるのに問題があります。

私のRoutedCommand:

使用法:

実行:

0 投票する
1 に答える
346 参照

wpf - WPF のスタンドアロン コマンド オブジェクト

WPFコマンドをスタンドアロンオブジェクトとして実装することは可能/実用的ですか? もしそうなら、これは通常どのように行われますか? 私がコマンドについて目にする例のほとんどは、通常、RoutedCommand、RoutedUICommand、または RelayCommand のような ICommand の他の実装を使用することを含みます。これらのコマンドが MVVM パターンで機能する方法は、プロパティを通じてこれらのタイプのコマンドのいずれかのインスタンスを公開することです。ViewModel 内では、コマンドのロジックが ViewModel のメソッドとして実装され、デリゲートとしてコマンド オブジェクトに渡されます。

私が理解している「古典的な」コマンド パターンは、各コマンドを OpenCustomerViewCommand などの独自のスタンドアロン オブジェクトとして実装することです。ロジックは独自のオブジェクトに完全にカプセル化されるため、アプリの他の部分で再利用できる可能性があります。たとえば、アプリのいくつかの場所から CustomerView を開くことができる場合、そのメソッドをコピーして各 ViewModel に貼り付けるのではなく、CustomerView にアクセスできる各 ViewModel で OpenCustomerViewCommand のインスタンスを単純に作成できると便利です。 、デリゲートを RelayCommand に渡します。私の理解が正しければ、Cut や Paste などの定義済みの ApplicationCommands はこのように動作します。

私には、ViewModel 内にロジックを提供する必要があるため、コマンド パターンの価値が少し低下するように思えます。この方法で実行することと、UI イベントのコマンド ハンドラーを実装するコード ビハインドを使用することとの主な違いを、私は本当に理解していないと思います。上記で説明したより古典的なアプローチよりも RoutedCommand パターンを使用する必要がある理由はありますか?

0 投票する
0 に答える
610 参照

c# - CommandManager RequerySuggested イベントの無効化

CommandManager RequerySuggested を使用せずにプロジェクトのパフォーマンスをテストしたいと考えています。次のコードを使用して、CommandManager が RequerySuggested イベントを発生させないようにします。RequerySuggested Event からすべてのイベント ハンドラーを削除します。これを達成するための他の簡単な方法はありますか。