問題タブ [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.

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

c# - この同じ ListBoxItem の DataTemplate によって作成されたボタンから ListBoxItem にアクセスする方法

問題

このコードの一部を使用して、を押したときにListBoxItemを含むのプロパティ (より具体的には、そのインデックス) にアクセスしたいと考えています。の親 ( である)Buttonを取得し、それからビジュアル ツリーを上っていく必要があると考えましたが、非常に重要な 2 つのことを知りません。それが本当に私の問題を解決するかどうかでもありません。ButtonStackPanelTemplatedParent

XAML

Cシャープ

正常に動作する私のコードの一部

私が答えかもしれないと思ったもの(うまくいかない)

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

c# - ユーザー コントロール WPF のビジュアル オフセットのリセット

選択時にビューインジェクションを使用してロードされるユーザーコントロールにノードがバインドされているツリービューがあります。この時点で、コントロールのビジュアル オフセットは (0,0) に設定されます。このビジュアル オフセットを後で変更する方法はありますか。O このビジュアル オフセットがデフォルトに設定されるように、このコントロールが選択解除されているときにビジュアル ツリーからこのコントロールをアンロードするにはどうすればよいですか。

0 投票する
0 に答える
122 参照

c# - 親ビジュアル ツリーへの変更のキャプチャ

WPF 内FrameworkElementから、ルートから へのビジュアル ツリー パスへの変更をどのようにキャプチャできますFrameworkElementか? つまり、FrameworkElement、またはその親のいずれかが、ビジュアル ツリーの別のブランチに追加、削除、または移動されたときでしょうか。

  • 適切なイベントを探していましたFrameworkElementが、OnVisualParentChangedメソッドはありますが、フレームワーク要素をサブクラス化せずにハンドラーを登録できる適切なイベントは提供されません。したがって、これは、すでにインスタンス化されている任意の s には適用できませんFrameworkElement
  • 理論的には、RelativeSourceバインディングがここで役立つはずですが、それが機能するためには、探している親ノード (タイプ、レベル) を知る必要がありますが、そうではありません (以下を参照)。

ユースケース:この他の質問について、有望な可能な解決策の 1 つは、現在のNameScope関連を使用することFrameworkElementです。適切なインスタンスは添付プロパティNameScopeから取得できますが、ツリー内のすべてのノードに対して設定されるわけではなく、コントロール テンプレートウィンドウから構築されたビジュアル ツリーのルートに対してのみ設定されます。NameScope

したがって、適切な を見つけるにはNameScope、添付プロパティに値が設定されFrameworkElementていないノードが見つかるまでビジュアル ツリーを上っていく必要があります。上のビジュアル ツリーが変更されました。nullNameScopeNameScopeFrameworkElement

この議論はこのトピックに触れていますが、すでに 6 年前のものであり、解決策はありません。

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

wpf - ビュー モデルを別のウィンドウにポップアウトします (Chrome タブのように)

私のアプリケーションは、グラフ/チャート/テーブルなどを表示するさまざまなビュー モデルを備えた単一のウィンドウで構成されています。私のユーザーは、タブをドラッグする方法と同様に、チャートをポップアウトして独自のウィンドウに表示する機能が必要であると判断しました。独自のウィンドウで表示するには、Chrome から、または Visual Studio からドッキングされたビューに移動します。

新しいウィンドウで使用するビュー モデルの新しいインスタンスを生成することは避けたいと思います。

あるウィンドウから別のウィンドウに移動するときにビュー モデルを保持する方法はありますか? また、対応するビューをあるビジュアル ツリーから簡単に削除して、別のビジュアル ツリーに追加する方法はありますか?

アップデート:

AvalonDock を調べましたが、探しているものとはまったく異なります。既存のビューモデルを UI の一部からウィンドウに移動したいだけです。何か案は?

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

c# - VisualTreeHelper の垂直方向と水平方向の WPF find 要素

ビジュアル ツリーで縦方向および横方向に検索する最も簡単な方法は何ですか?

たとえば、検索を開始するコントロールから親のリストにないコントロールを見つけたいとします。

以下に簡単な例を示します (すべてのボックスは何らかの UI コントロールを表します)。

ビジュアルツリー

たとえば、ネストされたコントロール ( Search-Start ) で開始し、別のネストされたコントロール ( Should be found )を見つけたいとします。

これを行う最善の方法は何ですか?完全なビジュアル ツリーの解析はあまり効果的ではないようです...ありがとうございます!

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

c# - 視覚的な子を再帰的に見つけて、WPFにルートオブジェクトを追加していませんか?

タイプ T の VisualTree 内のすべての子を取得するための次の実装があります。

以下を使用してこのメ​​ソッドを呼び出します。

ただし、ルート依存オブジェクトが T 型の場合、この実装は正常に機能しません。VisualTree 内のすべての TextBlocks を検索したいとします。

この場合、実装は TextBlock を正常に検出します。ただし、この他のレイアウトがある場合:

実装にはルート オブジェクトが含まれていないため、TextBlock が見つかりません。メソッドを書き直してルート オブジェクトを含めるにはどうすればよいですか?

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

wpf - 画像を変更できるように、WPF Datagrid ColumnHeader で画像を見つけるにはどうすればよいですか?

Excel のような列のフィルタリングと並べ替えを実装しようとしています。これを行うために、DataTemplate を使用して列ヘッダーを定義しました。

そして、それはうまく出ます。

VisualTreeHelper を使用して列ヘッダーから画像を見つけようとしましたが、Header プロパティは文字列です。HeaderStyle および HeaderTemplate プロパティも使用してみましたが、役に立ちませんでした。

Snoop と呼ばれる WPF Spy プログラムを使用すると、そこに画像が表示されますが、コードでアクセスする方法がわかりません。コードでアクセスする必要があるのは、その列が並べ替えられているかフィルター処理されているかに基づいて画像を変更するためです。(これは XAML で実行できますか?)

0 投票する
0 に答える
568 参照

c# - WPF で現在のウィンドウのすべての可視およびフォーカス可能なコントロールの TabIndex を設定する方法

ボタンをクリックすると、ビジュアル ツリーをトラバースし、現在のウィンドウのすべての表示可能でフォーカス可能なコンポーネント コントロール (ボタン、画像、テキスト ボックスなど) を一覧表示し、TabIndex を何らかの値に設定しようとしています。ただし、いくつかのコントロールがリストされないか、tabIndexes が設定されません!

ここから採用した私のクラスはここにあります

そして、ここにそれが呼ばれる方法があります