問題タブ [visual-tree]
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# - この同じ ListBoxItem の DataTemplate によって作成されたボタンから ListBoxItem にアクセスする方法
問題
このコードの一部を使用して、を押したときにListBoxItem
を含むのプロパティ (より具体的には、そのインデックス) にアクセスしたいと考えています。の親 ( である)Button
を取得し、それからビジュアル ツリーを上っていく必要があると考えましたが、非常に重要な 2 つのことを知りません。それが本当に私の問題を解決するかどうかでもありません。Button
StackPanel
TemplatedParent
XAML
Cシャープ
正常に動作する私のコードの一部
私が答えかもしれないと思ったもの(うまくいかない)
c# - ユーザー コントロール WPF のビジュアル オフセットのリセット
選択時にビューインジェクションを使用してロードされるユーザーコントロールにノードがバインドされているツリービューがあります。この時点で、コントロールのビジュアル オフセットは (0,0) に設定されます。このビジュアル オフセットを後で変更する方法はありますか。O このビジュアル オフセットがデフォルトに設定されるように、このコントロールが選択解除されているときにビジュアル ツリーからこのコントロールをアンロードするにはどうすればよいですか。
c# - 親ビジュアル ツリーへの変更のキャプチャ
WPF 内FrameworkElement
から、ルートから へのビジュアル ツリー パスへの変更をどのようにキャプチャできますFrameworkElement
か? つまり、FrameworkElement
、またはその親のいずれかが、ビジュアル ツリーの別のブランチに追加、削除、または移動されたときでしょうか。
- 適切なイベントを探していました
FrameworkElement
が、OnVisualParentChanged
メソッドはありますが、フレームワーク要素をサブクラス化せずにハンドラーを登録できる適切なイベントは提供されません。したがって、これは、すでにインスタンス化されている任意の s には適用できませんFrameworkElement
。 - 理論的には、
RelativeSource
バインディングがここで役立つはずですが、それが機能するためには、探している親ノード (タイプ、レベル) を知る必要がありますが、そうではありません (以下を参照)。
ユースケース:この他の質問について、有望な可能な解決策の 1 つは、現在のNameScope
関連を使用することFrameworkElement
です。適切なインスタンスは添付プロパティNameScope
から取得できますが、ツリー内のすべてのノードに対して設定されるわけではなく、コントロール テンプレートとウィンドウから構築されたビジュアル ツリーのルートに対してのみ設定されます。NameScope
したがって、適切な を見つけるにはNameScope
、添付プロパティに値が設定されFrameworkElement
ていないノードが見つかるまでビジュアル ツリーを上っていく必要があります。上のビジュアル ツリーが変更されました。null
NameScope
NameScope
FrameworkElement
この議論はこのトピックに触れていますが、すでに 6 年前のものであり、解決策はありません。
wpf - ビュー モデルを別のウィンドウにポップアウトします (Chrome タブのように)
私のアプリケーションは、グラフ/チャート/テーブルなどを表示するさまざまなビュー モデルを備えた単一のウィンドウで構成されています。私のユーザーは、タブをドラッグする方法と同様に、チャートをポップアウトして独自のウィンドウに表示する機能が必要であると判断しました。独自のウィンドウで表示するには、Chrome から、または Visual Studio からドッキングされたビューに移動します。
新しいウィンドウで使用するビュー モデルの新しいインスタンスを生成することは避けたいと思います。
あるウィンドウから別のウィンドウに移動するときにビュー モデルを保持する方法はありますか? また、対応するビューをあるビジュアル ツリーから簡単に削除して、別のビジュアル ツリーに追加する方法はありますか?
アップデート:
AvalonDock を調べましたが、探しているものとはまったく異なります。既存のビューモデルを UI の一部からウィンドウに移動したいだけです。何か案は?
c# - 視覚的な子を再帰的に見つけて、WPFにルートオブジェクトを追加していませんか?
タイプ T の VisualTree 内のすべての子を取得するための次の実装があります。
以下を使用してこのメソッドを呼び出します。
ただし、ルート依存オブジェクトが T 型の場合、この実装は正常に機能しません。VisualTree 内のすべての TextBlocks を検索したいとします。
この場合、実装は TextBlock を正常に検出します。ただし、この他のレイアウトがある場合:
実装にはルート オブジェクトが含まれていないため、TextBlock が見つかりません。メソッドを書き直してルート オブジェクトを含めるにはどうすればよいですか?
wpf - 画像を変更できるように、WPF Datagrid ColumnHeader で画像を見つけるにはどうすればよいですか?
Excel のような列のフィルタリングと並べ替えを実装しようとしています。これを行うために、DataTemplate を使用して列ヘッダーを定義しました。
そして、それはうまく出ます。
VisualTreeHelper を使用して列ヘッダーから画像を見つけようとしましたが、Header プロパティは文字列です。HeaderStyle および HeaderTemplate プロパティも使用してみましたが、役に立ちませんでした。
Snoop と呼ばれる WPF Spy プログラムを使用すると、そこに画像が表示されますが、コードでアクセスする方法がわかりません。コードでアクセスする必要があるのは、その列が並べ替えられているかフィルター処理されているかに基づいて画像を変更するためです。(これは XAML で実行できますか?)
c# - WPF で現在のウィンドウのすべての可視およびフォーカス可能なコントロールの TabIndex を設定する方法
ボタンをクリックすると、ビジュアル ツリーをトラバースし、現在のウィンドウのすべての表示可能でフォーカス可能なコンポーネント コントロール (ボタン、画像、テキスト ボックスなど) を一覧表示し、TabIndex を何らかの値に設定しようとしています。ただし、いくつかのコントロールがリストされないか、tabIndexes が設定されません!
ここから採用した私のクラスはここにあります
そして、ここにそれが呼ばれる方法があります