問題タブ [routedevent]

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 に答える
2251 参照

wpf - WPFFrameworkElementがマウス入力を受信して​​いません

OnMouseイベントを子に表示させようとしていますFrameworkElement。親要素はaですPanelBackgroundプロパティはNullではありません)。

OnMouseが呼び出されることはなく、イベントは常に処理されず、Snoopは、ルーティングされたイベントがPanel要素までしか到達していないように見えることを通知します。

ドキュメントはそれが入力を処理すると言いますFrameworkElementが、なぜこのシナリオではないのですか?

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

c# - 処理されたRoutedEventは引き続きツリーをバブルアップします

ベースのコントロールを開発していTreeViewますが、ダブルクリックイベントがノードをバブルし続けていますTreeViewItem

目標は、TreeViewItemダブルクリックしたときに展開または折りたたむことです。

イベントのイベントハンドラーをMouseDoubleClickそれぞれに適用するスタイルがありますTreeViewItem

イベントを処理するコードは次のとおりです

これはトップレベルでは問題なく機能TreeViewItemしますが、子をダブルクリックすると、イベントによってツリーがバブルアップし、ブランチ全体が崩壊します。なぜイベントはバブルを続けているのですか?前述のように、[1]私はイベントを処理済みとして設定しています。

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

wpf - HwndHost から基になる WPF コントロールに入力イベントを渡しますか?

HwndHost で発生する入力イベント (主にマウス、最終的にはキーボード入力も) を基になる WPF コントロール (パネルなど) に渡す方法はありますか? HwndHost 内で WndProc に接続して、Windows メッセージを受け取ることができます。マウス クリックの routedevent を手動で作成し、それを親に送信してバブルアップさせることはできますか? アイデアをいただければ幸いです。ありがとうjkersch

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

wpf - WPF-RoutedEventsを理解する

こんにちは私はWPFを学んでいて、現在RoutedEventsについて読んでいます。本「ProWPFinc#」には、以下に示すコードのスニペットがあります。

重要なのは、ルーティングされたイベントの違い/利点が見当たらないということです(この例で判断してください)。通常のC#では、同じことを行います。フォームのすべての要素にハンドラーを追加します(これがここで行われたように)。

最初、ルーティングされたイベントについて読んでいたとき、それはそのように機能しているようです。フォーム/コントロール/ウィンドウのすべての視覚要素の親にイベントハンドラーを追加します。子をクリックすると、mousedownイベントが発生し、ビジュアルツリーを下に移動します。イベントがグリッドに到達すると、イベントハンドラーが呼び出されます。しかし、私は間違っていたか、間違っていました。通常のイベントとルーティングされたイベントの違いを誰かに説明してもらえますか

編集コードの挿入で何か奇妙なことが起こっています。コードスニペット全体を挿入して、タグのみを取得します

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

wpf - WPFのPreviewKeyDownイベントでキーが「ダウン」した瞬間が欲しい

PreviewKeyDown にジャンプすると、RichTextBox のキャレットの右側にある char はまだ移動されません。私はこのイベントに言いたいのですが、あなたのものは文字を右側に移動し、それから私に私のことをさせてください。どうやってやるの?

更新:私が話していることを知っていること... =>

代替テキスト

キャレットは「Harold...」という単語の直前にあり、スペースキーを数回押して「Harold...」を右に移動しました。しかし、黒い下線の書式設定が動かないようです...どうすれば、「Harold...」という名前を含む Run オブジェクトに下線を付けたままにできますか?

KeyDown イベントでスペースバー キーをキャッチしたかった理由は、新しい暗黙的に作成された Run オブジェクトを取得し、黒い下線を削除するためです。

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

c# - マウス イベントが UIElement に到達しない

オブジェクトの 6x8 グリッドがありSystem.Windows.Controls.Canvasます。左上のキャンバスはマウス イベントを受け取りませんが、他のすべてのキャンバスは受け取ります。やってみOnMouseMoveOnMouseClickイベント。

子オブジェクトが表示されないため、子オブジェクトはイベントを処理してSystem.Windows.Media.VisualTreeHelper#GetChildrenCount()いません。私も釣れませんでしPreviewOnMouseMoveた。キャンバスの前に、優先される (おそらく透過的な) コントロールが存在する可能性はありますか?

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

wpf - WPF RoutedEvent (EventManager.RegisterClassHandler 経由)

現在のウィンドウで任意のコントロール (データバインドかどうかに関係なく) の "変更" を追跡する一般的な方法を見つけようとしています (これは、たとえば、典型的な [オプション] ウィンドウで [適用] ボタンを有効または無効にすることです)。 ComboBox.SelectionChanged や TextBox.TextChanged などのいくつかのイベント ハンドラを接続します。WinForms では、フォーム内のすべてのコントロールをループし、それらのイベントを 1 つずつ接続する必要がありましたが、うまくいきました。WPFでは、次のようなはるかに少ないコードで実行できると思いました

この 1 行のコードで、MyCtrl 内のすべてのコンボボックスに対してコモボボックスの選択変更イベントを関連付けることができます。しかし、私が遭遇した問題は、私が正しく見れば、コンボボックスではなく " Selector" から派生した別のコントロールがウィンドウにある場合にも、このイベントが発生することです。たとえば、同じウィンドウにデータグリッドもあります (実際にはデータグリッドにコンボボックス列はありません)。別の行を選択すると、このイベントも発生します。

したがって、上記のコード行は、Selectorコンボボックスだけでなく、ベースから派生したすべてのコントロールの SelectionChanged イベントをフックしているように見えます。

これは正しいですか?すべてのコンボボックスに対して SelectionChanged イベントをフックするにはどうすればよいですか?

より多くの例で編集: 同じコントロールにコンボボックスとボタンがあり、次のように Button.Click と ComboBox.SelectionChanged イベントを追跡したい

問題は、ComboBox ドロップダウン ボタンをクリックした直後に Button.Click イベントが発生することです。どうすればこれを防ぐことができますか?

このイベントの追加情報は次のとおりです。

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

wpf - コントロールの「変更された」を追跡するための最も簡単な方法は?

さまざまな種類のコントロール(ボタン、テキストボックス、コンボボックス、チェックボックスなど)を含むユーザーコントロールがあります。何かが変更されたかどうかを追跡する一般的な方法が必要です。ほとんどの場合、詳細は気にしません(つまり、どのテキストボックスが変更されたかを知る必要はありません)。私が見たときEventManager.RegisterClassEvent、これが私の解決策になると思いましたが、すぐにそうではないことに気付きました。この問題は、発射が多すぎることです。たとえば、同じコントロールにボタンとコンボボックスがある場合、コンボボックスのドロップダウンを押すとbutton.clickイベントも発生します。

WinFormsでは、usercontrol内のすべてのコントロールをループして、適切なイベント(TextBox.TextChanged、ComboBox.SelectedIndexChangedなど)をサブスクライブする必要がありました。これは面倒ですが、機能します。WPFでそれを行うためのより良い簡単な方法があることを願っています。

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

wpf - WPF アプリケーション コマンド バインドが機能しない

こんにちは、WPF の CommandBindings に奇妙な問題があります。オブジェクトのコンストラクターに CommandBindings を追加します。コマンドバインディングは次のようになります

実行を担当する対応する関数はそのように見えます

問題は、cut コマンドしか機能しないことです。つまり、他の機能 (コピーまたは貼り付け) にブレークポイントを設定すると、ブレークポイントにヒットしません。誰かが私が間違っていることを教えてもらえますか??

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

wpf - WPF コマンド バインディング - イベント ハンドラーにアクセスするにはどうすればよいですか

こんにちは、XAML がコマンド バインディング イベント ハンドラーを使用する場所を選択する方法はありますか? カスタム コントロールにコマンド バインディングのコプルを追加しましたが、execute および can_execute に対応する関数は、コード ビハインドではなく、別のクラスにあります。このクラスは Canvas から派生し、XAML でこのクラスのインスタンスを作成します。

この方法でコマンドバインディングを追加します

それを行う方法はありますか?または、イベント ハンドラーをコード ビハインドに直接転送する必要がありますか??