問題タブ [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 投票する
2 に答える
1374 参照

c# - RoutedUICommand PreviewExecuted バグ?

MVVM 設計パターンを使用してアプリケーションを構築しており、ApplicationCommands クラスで定義された RoutedUICommands を利用したいと考えています。View の CommandBindings プロパティ (UserControl を参照) は DependencyProperty ではないため、ViewModel で定義された CommandBindings を View に直接バインドすることはできません。すべての ViewModel が CommandBindings の ObservableCollection を持つことを保証する ViewModel インターフェイスに基づいて、これをプログラムでバインドする抽象 View クラスを定義することで、これを解決しました。これはすべて正常に機能しますが、一部のシナリオでは、異なるクラス (View と ViewModel) で定義されているロジックを同じコマンドで実行したいと考えています。たとえば、ドキュメントを保存するとき。

ViewModel では、コードはドキュメントをディスクに保存します。

一見したところ、前のコードだけで十分ですが、ドキュメントがバインドされている View の TextBox は、フォーカスを失ったときにのみ Source を更新します。ただし、Ctrl+S を押すと、フォーカスを失うことなくドキュメントを保存できます。これは、ソースで更新された変更の前にドキュメントが保存され、事実上変更が無視されることを意味します。ただし、UpdateSourceTrigger を PropertyChanged に変更することは、パフォーマンス上の理由から実行可能なオプションではないため、保存する前に別の方法で強制的に更新する必要があります。そこで、PreviewExecuted イベントを使用して、次のように PreviewExecuted イベントで強制的に更新できるようにしようと考えました。

ただし、ハンドラーを PreviewExecuted イベントに割り当てると、Handled プロパティを明示的に false に設定した場合でも、イベントが完全にキャンセルされるようです。したがって、前のコード サンプルで定義した executeSave イベント ハンドラは実行されなくなります。cb.PreviewExecuted を cb.Executed に変更すると、両方のコード実行されますが、正しい順序ではないことに注意してください。

イベントを処理済みとしてマークしない限り、PreviewExecuted と Executed にハンドラーを追加して順番に実行できるはずなので、これは .Net のバグだと思います。

誰でもこの動作を確認できますか? それとも私が間違っていますか?このバグの回避策はありますか?

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

wpf - DelegateCommand と RoutedCommand およびジェスチャ - WPF

複合 WPF アプリを構築するときに DelegateCommand がジェスチャをサポートする方法はありますか? MenuItem と Button で使用されるコマンドを作成しようとしています。これは、キーボード ショートカットからアクセスできますが、別のアセンブリのクラス内にあります。

RoutedCommand を使用できますが、コード ビハインドを最小限に抑えたいと考えています。

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

silverlight-4.0 - SilverlightのRoutedCommands

Silverlight 4ベータ版でApplicationCommand.Copy、ApplicationCommand.PasteなどのRoutedCommandsを使用することは可能ですか?

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

wpf - WPF 2つのコマンドハンドラー、1つのコマンド

サードパーティのコントロールから派生しています。ApplicationCommands.SelectAllを実装しています。しかし、私が望む振る舞いは少し異なります。オーバーライドできる仮想メソッドはありません。クラスハンドラーを登録すると、次のようになります。

私のメソッドは呼び出されません。私が派生しているサードパーティのコントロールはマーキングです

e.Handled=true;

そのコマンドハンドラーで(私はこの原因を知っていますが、ソースを見ましたが、それを変更することはできません)

私に何ができる?

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

wpf - すべてではなく、特定の WPF コマンドのみを CommandManager に再クエリさせることは可能ですか?

BackgroundWorkerMVVM アプリケーションに応答性の高い UI を実装しようとしているので、UI をブロックしないように、すべてのコマンド ハンドラーを自動的に実行するように選択しました。

しかし同時に、バックグラウンドで実行中にユーザーが同じコマンドを実行できるようにしたくありません。解決策は明らかです:

  1. Executedハンドラーが呼び出されたら、CanExecuteハンドラーを返すfalse
  2. BackgroundWorker非同期を開始する
  3. BackgroundWorker終了したら、CanExecuteハンドラーtrueを再び戻します。

問題は、ステップ1の後とステップ3の後にWPFに通知する必要があり、CanExecute変更が必要であることです。を呼び出すことで実行できることはわかっていますがCommandManager.InvalidateRequerySuggested、これにより、CanExecute他のすべてのコマンドのハンドラーも再クエリされます。たくさんのコマンドを持っているのは良くありません。

特定のコマンド、つまり現在実行中のコマンドの再クエリを要求する方法はありますか?

ティア

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

wpf - 経路指定されたコマンドの所有者タイプは何ですか?

wpf カスタム コマンドを使用しています。カスタム コマンドを作成するときは、所有者タイプを定義する必要があります。説明には、コマンドを登録しているタイプであると書かれています。カスタム コマンドのサンプルをいくつか見ていましたが、Owner 型は UIElement で、他のいくつかはクラス名そのものでした。違いは何ですか?所有者のタイプは何ですか?

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

c# - 指定されたイベントからルーティングされたコマンドを起動する方法は?

WPF のコマンドについて簡単な質問があります。 ICommand が Command プロパティにバインドされたボタンがあり、このボタンをクリックするとコマンドが開始され、すごい動作します:)

ボタンを押しているときに特定のコマンドを開始したいのですが(MouseLeftButtonDownイベントだと思います)、複数のコマンドを1つのボタンに配置して、コマンドを開始するイベントを指定する方法がわかりません。

何か考えはありますか?多分カスタムコントロール?

助けてくれてありがとう、
アントワーヌ。

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

wpf - AvalonDock + UserControl + DataGrid + ContextMenu コマンドのルーティングの問題

MenuItemsof からのコマンドの伝播で奇妙な動作が発生していContextMenuます。

私は次の種類のレイアウトを持っています:内部のそれぞれにContextMenu設定され、その順番で AvalonDock の内部にあります。ドッキングまたはグリッドの周りを取り除けば、問題はありません。代わりに、この問題もありません。DataGridRowDataGridUserControlDockableContentUserControlListBoxDataGrid

コード ビハインドも簡単です。

ここに問題があります。選択した行を右クリックすると (右クリックする前に選択されていた場合)、コマンドが無効になります。この場合、コマンドは「ズーム」ですが、カスタムのものを含め、他のコマンドにすることもできます。

ここで何が問題なのかわかりません。SNOOP は、この伝播が失敗した場合、 ではなく、UserControlドッキングCanExecuteヘッダーの一部である「PART_ShowContextMenuButton」(ボタン) によって処理されることを示しています。

UserControlsAvalonDock内でホストされている UI コマンドの伝搬に関して、他にも問題がありましたが、これは最も再現しやすいものです。

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

wpf - RoutedCommand.ExecuteでRelativeSourceCommandTargetをコードビハインドで設定します

コマンドと呼ばれる静的クラスがあります。その中のRoutedCommandsの1つは、ConfirmNoPrintと呼ばれます。次のように、カスタムコントロールからコードビハインドで実行したいと思います。

カスタムコントロールクラスには、RelativeSourceプロパティが次のように設定されているBindingのインスタンスがあります。

_mainControlBindingのプロパティの1つを使用して、Commands.ConfirmNoPrint.Executeの2番目のパラメーターとして渡す必要のあるIInputElementのインスタンスを取得できますか?

ConfirmNoPrintのコマンドバインディングは私のカスタムコントロールの親ですが、別のアセンブリにあります。循環参照が発生するため、参照を追加できません。

私は間違った木を完全に吠えていますか?

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

wpf - 複数のウィンドウ パターンでアプリケーション レベルで RoutedCommand を起動する方法は?

アプリケーションに複数のウィンドウ (window1、window2、window3 など) があります。

1 つの RoutedCommand (KeyGesture F11 を使用) が wi​​ndow1 にバインドされました。window2 が入力フォーカスを持っているときに F11 を押してそのルーティングされたコマンドを起動する方法は?

WinForm アプリケーションでは MessageFilter を使用して F11 を検出しますが、WPF ではどうすればよいですか?