問題タブ [routed-events]

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 投票する
1 に答える
212 参照

wpf - WPF イベント ルーティング

2 つの子要素 ​​(両方ともキャンバス) を持つグリッド コントロールがあり、最初のキャンバスが 2 番目のキャンバスをオーバーレイします。バックグラウンドキャンバスでマウスダウンイベントを処理するにはどうすればよいですか?

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

wpf - WPF スタイルのオーバーライドが検証エラー イベントの伝播を中断する

Window をオーバーライドするカスタム コントロールがあります。

また、次のスタイルもあります。

残念ながら、これにより、ウィンドウのコンテンツに対する Validation.ErrorEvent の伝播が中断されます。つまり、私のウィンドウは問題なくイベントを受け取ることができますが、標準のウィンドウ (または誰でも) がそれを処理する方法を模倣するためにそれをどうすればよいかわかりません。

検証コントロールが標準ウィンドウに配置されている場合、それらは機能します。OverrideMetadata 呼び出しを取り出すだけでも機能します (カスタム ウィンドウ内に残します)。OverrideMetadata 呼び出しをそのままにしておいても、カスタム ControlTemplate を定義しない場合にも機能します。テンプレートをデフォルトのままにしておくと、内部のものは検証イベントを適切に受け取り、検証テンプレートを使用します。

カスタム コントロール テンプレートを使用して、これらの検証エラー イベントを処理するためのストック機能を再び動作させるにはどうすればよいですか?

ありがとう!

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

c# - RoutedEventにハンドラーがあるかどうかの確認

カスタムButtonクラスがあり、クリックされたとき(特定のウィンドウを開いたとき)に常に同じアクションを実行します。通常のボタンのように、ボタンのXAMLで割り当てることができるClickイベントを追加しています。

クリックされたら、Clickイベントハンドラーが割り当てられている場合は実行します。それ以外の場合は、デフォルトのアクションを実行します。問題は、ハンドラーがイベントに追加されているかどうかを確認する方法が明らかにないことです。

イベントのヌルチェックでそれができると思いました:

...しかし、それはコンパイルされません。コンパイラーは、定義クラスの内部でこのチェックを実行しようとしていますが、定義クラスの外部のイベントに対して+=または-=以外は実行できないことを通知します。

私は自分で正しい動作を実装しましたが、それは醜く冗長であり、これを行うための組み込みの方法がないことを信じることができません。私は何かが欠けているに違いありません。

関連するコードは次のとおりです。

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

c# - MS SurfaceTagVisualizerは連絡先イベントを盗みます

MSSurfaceプロジェクトのTagVisualizerコントロールに苦労しています。理論的には、コントロールは優れているように見え、実世界の物理オブジェクトからの入力に応答できます。

問題は、コントロールが画面全体をカバーするため(画面全体でタグをキャプチャしたいため)、アプリ内の他のコントロールがタッチイベントを受信しないことです。(ただし、ビジュアルツリーの直接のアセンダントである場合を除きます)。

私のアプリでは、各レイヤーが(連絡先の)入力に応答できる「レイヤー」タイプのアプローチが必要です。

これで、タグビジュアライザーをどこに配置してもかまいません。常に、他のすべてまたは一部のレイヤーから連絡先イベントを盗むことになります。( RoutedEventsの性質による)

私には、このコントロールはアプリケーションの他のコントロールに常に干渉するため、実際にはまったく役に立たないように見えます。ここで何が欠けていますか?

だから私の質問は:これを回避する方法についての提案はありますか?同様のシナリオでTagVisualizersを使用した人はいますか?もしそうなら、どのようにこれを解決しましたか?

ちなみに、レイヤーはサブ要素の真上にあるイベントのみを盗むため、すべて正常に機能します(レイヤーの残りの部分はヒットテストでは見えません)

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

.net - TextChanged イベント - 無限ループにならないのはなぜですか?

もう少し複雑なことをしようとしているときに、よくわからない動作に出くわしました。

次のコードが textChanged イベントを処理しているとします。

ここで、テキストボックスに文字 (たとえば、A) を入力すると、イベントが 2 回発生し (2 つの「+」が追加されます)、最終的に表示されるテキストは A+ になります。

私の 2 つの質問は、イベントが 2 回だけヒットしたのはなぜですか? そして、イベントの最初の実行だけが実際にテキストボックスのテキストを設定するのはなぜですか?

前もって感謝します!

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

wpf - Expander.Header内のドロップダウン動作を飲み込むにはどうすればよいですか?

ユーザーがヘッダー領域内をクリックしたときにエキスパンダーが拡大/崩壊しないようにしたいと思います。これは基本的にQ1396153と同じ質問ですが、もっと好ましい答えをいただければ幸いです:)

これを行うための非侵襲的な方法はありますか?マウスクリックを防ぐためにExpander.Headerコンテンツに動作をアタッチする方法が正確にわかりません。私は固定グリッドレイアウトを介してエキスパンダー自体の外側にコンテンツをフロートさせたいと思っていますが、解決策には熱心ではありません。アイデア?

XamlPadサンプルXAML:

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

wpf - wpfでパラメーターを渡すイベントを発生させる

GridView の項目がダブルクリックされたときにウィンドウにタブを追加したいと思います。ただし、追加されるタブはクリックした項目によって異なります。WPFでこれをどのように行うべきですか? RoutedEvents について考えましたが、パラメーターを渡す方法がわかりません。助言がありますか?

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

wpf - 他のコントロールの下にあるコントロールのクリック イベント

コントロール A と B の 2 つのコントロールがあります。コントロール B は A の上に配置されます。B をクリックすると、クリックされたイベントのみが発生しますが、A のクリック イベントも発生する必要があります。これは、ルーティング イベントを使用して何とか実現できますか?

コントロールのスクリーンショットは次のとおりです。

代替テキスト http://www.imagebanana.com/img/hu5znv4/buttons.png

もちろん、このケースは単なる例にすぎません。マウス カーソルの下のすべてのコントロールのイベントを 1 つの場所で発生させる一般的な方法を探しています。ただし、この問題の具体的な解決策は私にも役立ちます! ヒントをありがとうございました!

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

wpf - カスタム マークアップ拡張機能が RoutedEvents を返す

閉じるボタンの一般化されたイベントを作成しようとしています。ウィンドウを閉じる必要がありますが、その前に所有者ウィンドウにフォーカスを設定します。アプリケーションに30以上のウィンドウがあるため、それはかなり非現実的であるため、そのためのすべてのファイルにイベントを設定したくありません。(そのため、その動作を変更したい場合は、毎回 30 個のファイルを変更する必要があります)

それが正しいアプローチかどうかはわかりませんdelegate(object sender, RoutedEventArgs e)が、コードは次のとおりです。

FocusClose メソッドは、ウィンドウを取得して閉じますが、以前にその所有者にフォーカスを設定します。しかし、私はそれを機能させることはできません。ボタンをxamlに設定すると、

(win は私のウィンドウ名です)、次のエラー メッセージが表示されます。

Click="{e:CloseWindow {Binding win}}" は無効です。'{e:CloseWindow {Binding win}}' は、有効なイベント ハンドラー メソッド名ではありません。生成されたクラスまたはコード ビハインド クラスのインスタンス メソッドのみが有効です。行 28 位置 17。

私は何か間違ったことをしていますか?これが最善のアプローチですか、それとも別のオプションがありますか? 前もって感謝します!

クラーク

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

wpf - ContextMenuClosingイベントを手動で発生させる

ContextMenuから派生しており、派生クラス内でContextMenuClosingイベントを手動で発生させる必要があります。次の2つの方法を試しました。

RoutedEventsは初めてですが、ContextMenuClosingイベントを手動で発生させる方法を教えてもらえますか?ありがとう!