問題タブ [routedevents]
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.
wpf - WPFルーティングイベントの発火?
私は3つのボタンを持つWPFフォームを持っていて、それらにイベントをルーティングしています.コマンドは開始時にバインドされています...
有効性は、ボタンなどを有効または無効にします。
フォームには新しいオブジェクトまたは古いオブジェクトのインスタンスがあり、データに対して検証が行われます
私の問題は、イベントが常に実行され、フォームがハングするだけで、検証コードが db などをポーリングしてチェックすることです....
フォームがロードされたときに一度だけ起動する方法はうーん....
wpf - ViewModel にルーティングされる Silverlight 3 LoadedEvent
私のクライアントは、View Model で usercontrols Loaded Event にフックしようとしています。基本的に、ビューモデル内でコントロールがロードされたイベントをいつトリガーするかを知りたいのです。彼らは、xaml の背後にあるコードなしでそれを行う方法を探しています。これは実現可能ですか?ロードされたイベントを xaml のビューモデルにルーティングできるかどうかを調べています。
c# - Button.MouseDown
私はWPFで比較的新しいです。MouseDownEvent と PreviewMouseDownEvent の違いを理解しようとしています。
私は WPF イベント戦略を理解し、MouseDown イベントがバブリング イベントであり、PreviewMouseDown がトンネリング イベントであることを理解しています。
この MSDN の概要http://msdn.microsoft.com/en-us/library/ms742806.aspx#routingによると、これらのイベントが発生する順序も理解しています(そこに例のある図があります)。
だから私は自分自身をコーディングしようとしました、例えばこれをチェックしてください:
各イベント (プレビューと非プレビュー) のイベント ハンドラーがあり、何が起こっているか、どのイベントがスローされているかを確認したかった (イベントごとにメッセージ ボックスが表示されている)。
「MyButton」ユーザー コントロールは、単純にベース ボタンを拡張し、OnMouseDown と OnPreviewMouseDown をオーバーライドして、e.Handled を false に設定します。
(これとこれなしで試しました)。
MSDN の概要 (上記のリンク) によると、3 つの要素がある場合、イベント ルートは次のようになります。
ルート要素の PreviewMouseDown (トンネル)。
中間要素 #1 の PreviewMouseDown (トンネル)。
ソース要素 #2 の PreviewMouseDown (トンネル)。
ソース要素 #2 の MouseDown (吹き出し)。
中間要素 #1 の MouseDown (吹き出し)。
ルート要素の MouseDown (バブル)。
したがって、上記に従ってメッセージボックスが表示されることを期待していました。なんらかの理由から-プレビューイベントのみがスローされていることを理解していません(MSDNの言うことによると Preview_B1=>Preview_B2=>Preview_B3 )。私の予想は、Preview_B1=>Preview_B2=>Preview_B3=>NonPreview_B3=>NonPreview_B2=>NonPreview_B1 でした。
ただし、プレビュー以外のイベントはまったくスローされていません。
したがって、基本的に私はイベントのルートを理解していません.MSDNの概要から、ルートはルート要素から始まり、ソース要素に下り(トンネル)、ルート要素に戻る(バブル)ことを理解しましたが、これは実際に起こっていることではありません。
このイベントがどのように機能しているかを理解することは、私にとって非常に重要です。ここで基本的なことを理解していない可能性があります。助けていただければ幸いです。
ありがとう!! -ギリ
wpf - WPF - 特定のコントロール インスタンスの親で RoutedEvent を処理する
私のユーザー コントロールには、Textbox1、Textbox2 などのいくつかのテキスト ボックスがあります。
親では、すべての Textbox ではなく、Textbox1 から発生した KeyDown イベントのみを処理したい
親にハンドラーを追加しました
もちろん、これは私が望まないすべての KeyDown イベントを処理します。
イベントが発生した場所を確認するには、RoutedEventHandler に条件付きロジックを追加する必要がありますか?
またはより良い方法はありますか?
これを行う最善の方法は何ですか?
ありがとう。
wpf - WPF: 1 つの特定のコンテンツからのみバブリング イベントを処理する
今度は RoutedEvents について学習しようとしています。バブリングとトンネリングとすべてを理解しています。しかし、私は少し問題があり、どのように処理すればよいかわかりません。
自分で定義した UserControl に ItemsControl があります ( TabItem を継承します)。この itemsControl は、ListBox またはまだ決定されていないセレクターである可能性があります (このソリューションで何が最適かによって異なります)。
ここで、1 つの項目が選択されたときに (最適な選択方法が何であるかはまだわかりませんが、おそらく doubleclick )、UserControl を保持する TabControl でイベントをキャプチャする必要があります。ありがたいことに、userControl が XAML ビジュアルツリーに配置されると、バブリング イベントが流れ、イベントが TabControl に到達できるようになります。ただし、これを実装するにはまだいくつかの問題があります。
1) MouseDoubleClick として設定したとしましょう (他のタブや ItemsControlItems の外側など)。イベントがどこから来ているかをいつでも確認して、それが正しいことを確認できると思いますが、それが正しい方法だとは思えず、問題が発生している可能性があります。
2) イベントを SelectionChanged に設定し、ItemsControl を ListBox に設定した場合、ListBox 自体がそれを処理しないようにして、tabControl に到達できるようにする必要があります。どうすればいいですか?
3) 2) と同じですが、TabControl はそれ自体がセレクタであるため、独自の selectionchange イベントが発生します。それはどのように機能しますか。ハンドラーはリストボックスと TabControl の両方から取得しますか?
4) どの ItemsControl を使用すればよいかわかりません。アイテムをダブルクリックしてからイベントを処理するためだけに使用している場合、ListBox は多すぎません。選択などの望ましくない多くの効果があります。独自の ItemsControl を定義するか、ListBox を使用して選択などのプロパティの一部を上書きする方がよいでしょうか (どうすればよいでしょうか?)。
5) イベントのソースは ItemsContainer ですが、アイテム自体は必要ありません。そこにアクセスする簡単な方法はありませんか?
6) ボタンを配置し、DataTemplate にボタンを介してオブジェクトの ID を添付し、ボタンのクリックが処理される場所でそれをキャプチャして、それがどのアイテムであったかを識別したいとしましょう。それを行うプロパティはありますか、それとも自分で定義する必要がありますか?
7) 自分のイベントを作成するのが最善の方法でしょうか?
この問題に対するあなたの見解と、ここで行うのに最適なプロセスについてのコメントは高く評価されています。
編集:尋ねられたように、もう少し情報を追加することにしました。
私が目指しているもの; プログラムを起動すると、1 つのタブを含む TabControl があります。このタブは、オブジェクトのリスト (CompanyModel) を保持するため、残りのタブとは異なります。このリストは、私が言及した ItemsControl です。このリストから 1 つの会社を押すと、その会社に関する情報を含む新しいタブが追加されます。
私の解決策は、TabControl のソースとして TabItem コレクションを作成することでした。次に、別の XAML ソース ファイルで 2 種類の TabItems を定義します (何と呼べばよいかわかりません。基本的に新しいユーザー コントロールを追加します)。1 つは最初にリストが表示される場所で、もう 1 つは CompanyModel をコンストラクター パラメーターとして受け取り、それに関する情報を表示します。
これは機能しますが、会社リストのタブアイテムを個別に定義するという考えは好きではありません。タブコントロールの下で定義することはできません。両方ではなく、定義されたアイテムまたはソースのみを持つことができるからです。
選択した会社の Id を TabControl までバブリングする List DataTemplate にボタンを配置し、そこで処理し、CompanyModel を使用して新しい TabItem を追加することで、このアイデアを試しました。それはそれを試すための単なる解決策であり、CompanyTabs に anpther ボタンを追加すると、TabControl でもそれらを取得するなどの問題があります。
したがって、元のlistTabからイベントをバブルする良い方法を見つけるか、TabControlと同じ場所にタブを定義できる場合、私の問題は解決できます。
別の解決策として、TabControl とは別のリストを作成する方法があることはわかっていますが、他の人はこれがどのように表示されるかを知りたいと考えています。
wpf - WPFユーザーコントロールにクリックイベントを処理済みとしてマークさせる
マウスクリックイベントをビジュアルツリーに伝播するカスタムコントロールがあり、この動作を取り除きたいと思います。UserControlのxamlから処理されたルーティングイベント(ボタンクリックまたは他のマウスイベントによって発生した)をマークする方法はありますか?
wpf - WPF コマンド バインディング - イベント ハンドラーにアクセスするにはどうすればよいですか
こんにちは、XAML がコマンド バインディング イベント ハンドラーを使用する場所を選択する方法はありますか? カスタム コントロールにコマンド バインディングのコプルを追加しましたが、execute および can_execute に対応する関数は、コード ビハインドではなく、別のクラスにあります。このクラスは Canvas から派生し、XAML でこのクラスのインスタンスを作成します。
この方法でコマンドバインディングを追加します
それを行う方法はありますか?または、イベント ハンドラーをコード ビハインドに直接転送する必要がありますか??
wpf - MessageBoxが表示されたときにWpfルーティングイベントを停止しますか?
ユーザーが何らかのロジックに基づいてPreviewMouseDown
他のアイテムを選択できるかどうかを判断するために、TreeView でイベントを行いました。現在のアイテム データが変更された場合、変更を破棄するかどうかをユーザーに尋ねるメッセージ ボックスが表示されます。ユーザーが YES を押すとe.Handled = false;
、新しい選択が有効になるように設定します。ユーザーがNOを押すとe.Handled = true;
、新しい選択をキャンセルするように設定しました。
問題は、設定したのにe.Handled = false
TreeView でイベントが停止し、選択イベントが発生しないことです。誰かがそれに対する解決策を持っていますか?
前もって感謝します!
c# - ルーティング イベントの問題 - 子要素の前にルート UI 要素にヒットする
ルーティング イベントが、子要素の前にルート UI 要素にヒットしています。これは期待されていますか?ルーティング イベントを最初に子要素にヒットさせるにはどうすればよいですか?
目的: テキストが「カスタム テキスト ボックス」以外の場所に入力された場合は、「デフォルト テキスト ボックス」にテキストを入力します。
結果: カーソルのフォーカスが「カスタム テキスト ボックス」にある場合でも、custom_PreviewTextInput の前に Window_PreviewTextInput がヒットしています。
どうすればいいですか?
XAML
コードビハインド:
c# - Scrollviewerブロッキングイベント
今日私が戦っているのはscrollviewerであり、それが私のイベントをブロックしているという事実です。SO..ここにいくつかのxamlがあります。
つまり、スクロールビューアー内のグリッドに、ユーザーコントロールの質問をプログラムで追加します...ちなみにクリックイベントのあるボタンがあります。私の問題は、ボタンをクリックできないことです。スクロールビューアーのようです。ユーザーコントロールとボタンを邪悪なマウスから保護するための目に見えない盾のように機能します!
どんな助けにも感謝します!
編集:(これは私の質問ですユーザーコントロール)
再編集...間違ったコードが挿入されました...ちょっと眠いです