問題タブ [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 投票する
2 に答える
2546 参照

wpf - AdornerLayersが常に最上位のレイヤーであるのはなぜですか?それを変更する方法はありますか?

  1. アドナーレイヤーが常にアプリケーションの最上位レイヤーとしてレンダリングされるのはなぜですか(AdornerDecoratorの下-スクリーンショットを参照)?
  2. 装飾者を描くことができるレイヤー/レベルを変更する方法はありますか?

次のスクリーンショットでは、AdornerLayerがAdornerDecoratorに追加され、Adorners(MyAdorners)がこのAdornerLayerに追加されています。しかし、AdornerLayerは次のように取得されます。

AdornerLayer-概要

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

wpf - ContentControl は、名前を知らなくても DataTemplate 内のすべての要素を取得しますか?

現在のユーザー コントロールのすべての要素を含むリストを取得したいと考えています。LogicalTree の要素だけでなく、ユーザー コントロールで定義および使用されているデータ テンプレート内のすべての要素。

iam の反復処理で VisualTree がスローされた場合、ContentControl 内に VisualTree 項目がありません。VisualTree にはすべての要素が含まれていると思いましたか?

最後に、リストの DataTemplate 内に TextBox と Button が必要です。しかし、要素の x:Name がわかりません。

誰か助けてくれませんか?

コードでは、 UserControl.Loaded イベントが発生したときにそれを繰り返しスローしました...

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

c# - WPF-e.OriginalSourceの視覚的な所有コントロールを見つけるPreviewMouseLeftButtonDown

非常に簡単な質問です。

PreviewMouseLeftButtonDownイベントにアタッチしました。このイベントがトンネルすることを知っているので、ビジュアルツリーの最初のアイテムにe.OriginalSourceのフラグが付けられます。

例:

「MainGrid」という名前のグリッドがあります。このグリッドにはラベルが含まれています。

そのグリッドにPreviewMouseLeftButtonDownイベントを設定し、ラベルをクリックすると、PreviewMouseLeftButtonDownイベントがトリガーされます。

このためのMouseButtonEventArgsには、OriginalSource(e.OriginalSource)が含まれています。ラベルの内側をクリックする場所に応じて、これは境界線である可能性があります...これはテキストブロックであるか、境界線である可能性があります。

ビジュアルツリーを歩き、「MainGrid」を見つけたい。これを再帰的に行う方法は知っていますが、所有者のタイプがわからない場合はどうなりますか。私は所有者を見つけたいと思っているだけです(つまり、これは一般的である必要があります)。

「e.OriginalSource.ORIGINAL_OWNER」のようなもの

これが明確でない場合は、喜んで詳しく説明します。

ありがとう

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

wpf - 「新しい親ビジュアルにアタッチする前に、指定された子を現在の親ビジュアルから切断する必要があります」という例外が発生した場合に、ビジュアル ツリーをデバッグする方法

次のエラーをどのようにデバッグしますか?

新しい親ビジュアルにアタッチする前に、指定された子を現在の親ビジュアルから切断する必要があります。

私はこれの意味を理解したと確信していExceptionますが、ここで重要なことを見逃した場合に備えて、これが意味すると思うことは次のとおりです。

FrameworkElementビジュアル ツリーのどこかに既に存在するオブジェクトがあり、ツリーの別の場所に再度追加しようとしています。

これを回避するには、2 つのオプションがあります。

  1. ビジュアルツリーの現在の位置から削除するか、または
  2. 私の実装に応じて複製します。

ここまでは順調ですが、Exceptionどのタイプの子を変更する必要があるかがわからないのはなぜですか? 使用しようとしているオブジェクトに複数の子が含まれている場合、各クラスを調べて、 this をスローするオブジェクトを見つける必要があるためExceptionです。

オブジェクトを簡単に見つける方法はありますか? スタックトレースはあまり役に立たないと思います。

ここでスタックトレース:

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

c# - WPFの長方形のヒットテスト半径をどのように増やしますか?

次のような長方形があるとします。

これは、MouseUp イベントの四角形自体でヒット テストを実行するために機能します。ただし、長方形の一般的な幅は 1px 幅であるため、長方形の端をクリックするのは困難です。Rectangle のストロークの「有効なクリック ボーダー サイズ」を、そのストロークの視覚的な外観よりも大きくしたいと考えています。(たとえば、長方形が 1px 幅で描画されているとしますが、マウス クリック領域は実際には 3px 幅です)

そのようなことは可能ですか、または Rectangle のストロークの太さを増やさなければなりませんか?

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

wpf - ビジュアル ツリーでコントロールを見つける

SelectedRadioButton を DataTemplate から取得しようとしています。

Wpf インスペクターはビジュアル ツリーを表示しました。

ここに画像の説明を入力

そしてコードで:

itemContentPresenter です。Wpf インスペクタの画像を参照してください。そこから SelectedRadioButton に到達できる必要があると思います。変数controlは常に null です。
ここで何が欠けていますか?これらのvisualtreehelpersを使用します。

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

wpf - 複数のコンテンツ、親が null

2 つのコンテンツ エリアをホストする UserControl を実装しようとしています。1 つはボタン領域用、もう 1 つは一般的なコンテンツ領域用です。ただし、それを使用しようとすると、追加の ButtonArea に親が設定されていないため、RelativeSource ルックアップが失敗します。この問題は、コントロールがポップアップで使用されている場合にのみ発生し、ポップアップで使用されていない場合はすべて正常に機能します。

そして、これは UserControl のコントロール テンプレートです。

バインディング ログは次のとおりです。

ご覧のとおり、ルックアップは通常のコンテンツでは機能しますが、追加のボタン エリア コンテンツでは失敗します。たとえば、ポップアップの代わりにキャンバスを使用し、キャンバスにプロパティを設定しようとすると機能します。デバッグすると、VisualTreeHelper.GetParent がグリッドに対して null を返すことがわかります。ポップアップが使用されているときにこれが失敗する理由を知っている人はいますか?