問題タブ [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.
c# - C# - RoutedEvent をリッスンしているサブスクライバーのリストを取得しますか?
PasswordBox PasswordChanged イベントをサブスクライブしているオブジェクトのリストを取得しようとしています。
PasswordBox には、静的な読み取り専用の RoutedEventPasswordChangedEvent
とインスタンスPasswordChanged
イベントがあります。
ありがとう!
c# - MouseDoubleClick イベントがバブルしない
簡略化した私のシナリオ: 従業員の行を含む ListView があり、各従業員の行には、給与を調整する「増加」および「減少」ボタンがあります。
私のプログラムで、従業員の行をダブルクリックすると、「この人を解雇する」ことを意味するとします。
問題は、「増加」をすばやくクリックしているときに、ListViewItem でダブルクリック イベントがトリガーされることです。当然のことながら、給料を上げているだけで人を解雇したくはありません。
他のすべてのイベントがどのように機能するかによると、イベントを設定することでこれを解決できると期待してHandled=true
います。ただし、これは機能しません。WPF は、完全にリンクされていない 2 つの別個のダブルクリック イベントを生成するように思われます。
以下は、私の問題を再現するための最小限の例です。目に見えるコンポーネント:
そしてハンドラコード:
このプログラムを起動し、リストされたボタンをダブルクリックすると、両方のメッセージ ボックスが順番に表示されます。(また、この後ボタンが下の位置で動かなくなります。)
「修正」として、ListViewItem ハンドラーで、イベントに関連付けられたビジュアル ツリーを検査し、「どこかにボタンがある」ことを確認してイベントを破棄できますが、これは最後の手段です。そのようなクラッジをコーディングする前に、少なくとも問題を理解したいと思います。
WPFがこれを行う理由と、問題を回避するためのエレガントな慣用的な方法を知っている人はいますか?
c# - なぜe.Handled=trueが機能しないのですか?
私は次のXAMLを持っています
背後のコードで私はこれをやっています
これで、マウスを上に移動しButton
て設定しても、とe.Handled = true
のイベントがそれぞれ呼び出されます。なんで?ルーティングされたイベントがバブリングするのを防ぐにはどうすればよいですか?Grid
StackPanel
asp.net-mvc - RouteCollection を使用して MVC .NET URL がルーティングされない
MVC .NET と RouteCollection クラスを使用して、Web アプリで URL をルーティングしています。これは、URL 内の任意の場所にテキスト "PRN" を含む URL を渡すまでは正常に機能します。この場合、ルーティングは行われず、400 Page Not Found エラーがクライアントに返されます。ルーティング コレクションが参照される前に、何かがエラーをスローしているようです。これは、URL が取るべきルートが決して変更されないためです (つまり、基になるコードのブレークポイントがヒットすることはありませんが、文字列 "PRN " がブレークポイントにヒットします)。
したがって、ページの検証の問題である可能性があると考えました.URLに「PRN」というフレーズが含まれている場合、「印刷」や「ポルノ」のようなものであるため、Microsoftが例外をスローすることを決定した可能性がありますが、その場合は「潜在的に危険な Request.Form 値がクライアントから検出されました」というエラーが表示されますが、そうではありません。
Google は PRN が "ポルノ" の結果を返す必要があると考えているため、これを調査するのは面倒でした。つまり、検索結果の 98% が無効 (かつ不適切) であるということです。Google で「-porn」句を使用すると、結果が約 10 ~ 30 件のヒットにまで落ち込み、すべて役に立たなくなります。
文字列「PRN」を含む URL が適切にルーティングされない理由を知っている人はいますか? 参考になる投稿やスレッドがあれば、それは素晴らしいことです (繰り返しますが、Google は私を失望させました)。
wpf-controls - ButtonBase を使用したルーティング イベント引数
私は現在、メンバーのチームと一緒にプログラムに取り組んでいますが、彼らもこれを解決する方法を知りません。特殊なユーザー コントロール「ImageButton」のセットを作成しました。プログラムのメニューセクションにそれを使用しています。メニュー自体は別のユーザー コントロールです。
現在、ButtonBase.Click を使用してボタンにアクセスしていますが、新しい ImageButtons では機能しません。
ButtonBase.Click は、「MainMenu_Click」というイベントにつながります。
private void MainMenu_Click(object sender, RoutedEventArgs e) { Button _menuButtonClicked = (Button)e.OriginalSource; this.ShowMainPage((MainMenuCommands)_menuButtonClicked.Tag); }
私はすでにそれらを ImageButtons として解析しようとしましたが、うまくいきませんでした。したがって、ButtonBase.Click に似ているが、ImageButtons 用のソリューションが必要です。
編集: 私が使用している 3 つのファイルがあります: MainWindow.xaml (およびその cs) MainMenu.xaml (およびその cs) ImageButton.xaml (およびその cs)
MainMenu にはいくつかの ImageButtons があります。MainMenu は MainWindow で使用されます。設定するプロパティの 1 つは、ButtonBase.Click です。しかし、System.Windows.Controls.Button ではなく ImageButtons 用にセットアップする必要があります。
wpf - PreviewMouseDown が期待どおりにトンネリングしない
アプリに次のツリーがあります。
MyCustomControl は ItemsControl から派生し、その項目を StackPanel に表示します。
MyCustomControl は、マウスがクリックされたときに知る必要があるため、OnPreviewMouseDown メソッドをオーバーライドし、コントロール内でマウスが押されたときに通知を受けることを期待しています。
何が起こるか: Button1 内をクリックすると、PreviewMouseDown イベントがツリーに沿って移動し、OnPreviewMouseDown が期待どおりに実行されます。しかし、Item1 をクリックすると、PreviewMouseDown イベントは MainWindow の直後に停止し、LayoutRoot にも到達しません。
Snoopを使用して取得したルーティング イベントの詳細は次のとおりです。
Button1 のクリック:
Item1 をクリック:
イベントは処理済みとして報告されることはないため、私が知る限り、トンネリングを続行する必要があります。
ここで何が欠けていますか?
windows-phone-7 - WP7 カスタム コントロールの RoutedEvents
Silverlight の通常版では、EventManager で登録することでイベント ハンドラーを作成できます。Windows Phone 7 にはそのクラスがありません。私の質問は、親パネルによって処理されるイベントを作成する方法です。
私のシナリオ: テキスト ボックスを含むカスタム クラスを作成しました。Foreach テキストブロックがクリックされたときに発生するカスタム動作を追加しました。動作は次のように機能します。
私の問題を処理する方法を教えてもらえますか?
c# - ルーティング イベントと ScrollViewer
これが私の要素ツリーの構成方法です(無関係な情報は削除されています)。
ドラッグアンドドロップをシミュレートしています。クリック可能なラベルをクリックすると、カーソルが変形して、ドラッグしたような印象を受けます。私が欲しいのは、TabItemをクリックすると、通常のカーソルが元に戻ることです。
PreviewMouseDown イベントを使用すると、ラベルのクリックが許可されないため、使用できません。
私が見つけた解決策の 1 つは、ScrollViewer と ItemsControl の間の要素ツリーに大きなパネルを追加して、クリックを受け取る透明な背景を追加し、ItemsControl の CollapsibleGroupHeaderとItemsPanel にイベント ハンドラーを配置することでしたが、実際にはエレガントな解決策ではありません。
そのような問題を解決するために、WPF で RoutedEvents を扱います...
注:私のハンドラーは私のスタイルではなく、より多くの情報を提供するためだけのスタイルです
私よりも良い解決策はありますか?
wpf - あるコントロールから別のコントロールに RoutedEvent ハンドラーをコピーする
他の情報を持たない関数から返された WPF MenuItem があり、別の (新しい) MenuItem のクリック イベントを最初の MenuItem と同じ関数に設定したいと考えています。
Windows フォームでこれを行うコードを見たことがあります (たとえばIs it possible to "steal" an event handler from one control and give it another? ) が、WPF ルーティング イベントの解決策が見つかりません。