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

wpf - WPFマウスの下の要素を取得

MouseMove イベントでマウスの下にある要素の配列を取得する WPF の方法はありますか?

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

wpf - バインディング要素名。ビジュアル ツリーまたは論理ツリーを使用しますか。

を持っ{Binding ElementName=foo}ている場合、視覚ツリーまたは論理ツリーを検索しますか?

WPF の論理ツリーとビジュアル ツリーについて | データを見る、データする

論理ツリーが重要になるのはいつですか?

{Binding ElementName=Foo} などで名前を検索すると、継承可能なプロパティの場合と同じように、名前の範囲を検索するために祖先が検索されます。

アタッチされた動作による Silverlight での ElementName バインディング

これを有効にするために、WPF は ElementName および RelativeSource バインディングを提供し、ビジュアル ツリー内の他の要素を見つけてバインドするための強力なメカニズムを提供します。

編集:

によるバインドに使用される論理ツリーのように見えますElementName

引数#1。

MSDN の記事FrameworkElement Classによると:

FrameworkElement は UIElement を拡張し、次の機能を追加します。

  • データ バインディングと動的リソース参照のサポート: データ バインディングとリソースのプロパティ レベルのサポートは、DependencyProperty クラスによって実装され、プロパティ システムに具体化されますが、式 (プログラミング構造) として格納されているメンバー値を解決する機能データ バインディングと動的リソースの両方の基盤となる) は、FrameworkElement によって実装されます。詳細については、「データ バインディングの概要」および「リソースの概要」を参照してください。

引数#2。

ElementNameを指してx:Nameいるので、この名前は何らかの方法で見つける必要があります。NameScopeの概念があります。

ほとんどのシナリオでは、FrameworkElement および FrameworkContentElement で公開されている FindName メソッドは、名前で要素を検索するために呼び出すより適切なメソッドです。FrameworkElement および FrameworkContentElement によって公開される Name プロパティは、初期名をマークアップ属性として設定するために使用するより適切なプロパティです。また、FrameworkElement および FrameworkContentElement で公開されている RegisterName メソッドは、名前を特定の名前スコープに確立するために必要です (これを直接実行できる NameScope メンバーはありません。RegisterName を使用するには、最初に現在の名前スコープを設定する必要があります)。

一方、Visual クラスにはメソッドがなく、 INameScopeFindNameも実装されていません。

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

wpf - WPF-ビジュアルツリーをすばやく取得する方法

グリッド内に動的にいくつかのコントロールを追加しています。いくつあるかわかりませんし、正確な階層もわかりません。私がやりたいのは、特定のタイプ(たとえば、ボタン)を持ついくつかのコントロールにアクセスし、いくつかのプロパティをインスタンス化することです。これを行うための最良の方法は何ですか?

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

wpf - ビジュアル ツリーでコントロールを移動する方法はありますか? (WPF)

いくつかのコントロールをビジュアル ツリーのある部分から別の部分に再配置したいと考えています。

  • 私はこれを行うことができますか?
  • 方法についての指示やヒントはありますか?
0 投票する
0 に答える
252 参照

wpf - Model3DGroup ツリーをたどる

実行時に分析する必要がある Model3DGroups で構成される複雑な 3D シーンがあります。Model3Dノードは VisualTree にも LogicalTree にも参加しないため、a の親を見つける方法は他にありますModel3DGroupか?

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

wpf - 要素がビジュアル ツリーから削除された後、どのように commandBinding の CanExecute を起動できますか?

ここで関連する質問があります。ここでは、コマンド バインディングを使用したユーザー コントロールがあります。ユーザー コントロールはビジュアル ツリーから削除されていますが、canExecute はまだ起動しています。コマンディング モデルについての私の理解では、ルーティング イベントのようにバブリングしてトンネリングするというものでした。では、コマンド バインディングがアタッチされた要素がビジュアル ツリーに存在しなくなったら、どのように CanExecute を起動できるでしょうか。

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

wpf - WPF:ContextMenuをビジュアル親にバインドする

sがビジュアルツリーの一部ではないことは知っていますが、 aのプロパティをその親のプロパティにContextMenuバインドしようとしています。これまで、祖先バインディングを試し、変換を試しましたが、現時点でリモートで実行可能と思われる唯一の方法は、とリフレクションを使用して、に型名とプロパティ名を渡すことです。それでもうまくいくかどうかはわかりません。VisibilityContextMenuUserControlMultiValueConverterUserControl

私はこれを間違った方法で行っていますか?

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

wpf - 全文検索のためにワーカースレッドでVisualTreeをウォークします

複雑なデータを表示するためにWPFを使用しています(レポートを考えてください)。今、それを全文検索する必要があります。現在、これを行うには、ビジュアルツリーを歩いてテキストブロックを探します。これはUIスレッドで行う必要があるようですよね?ここでの問題は、UIブロック全体で次の一致が見つかるまでにかなりの時間がかかる可能性があることです。

この問題を回避する方法はありますか?UIオートメーションを使用することはできますが、一致するものを見つけたら、それを強調表示するにはどうすればよいですか?UIオートメーションを使用すると、UIエレメントの実際のオブジェクトインスタンスへの参照を取得できないため、その上に装飾を配置することはできません。

WPFの全文検索は通常どのように実装されますか?XPSビューアーはどのようにそれを行いますか?

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

wpf - コントロールが視覚的な親をいつ取得または変更するかを確認するにはどうすればよいですか?

コントロールの視覚的な親のイベントをフックしたい。

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

c# - XAMLで定義されたDataTemplateにnullのVisualTreeがあります

.NET3.0でWPFを使用しています。

GridViewのCellTemplateとして定義された比較的単純なDataTemplateがあります。DataTemplateのVisualTreeプロパティにFrameworkElementFactoryが含まれていることを期待していますが、GridViewColumnHeader.Clickイベントからアクセスしようとするとプロパティがnullになります。VisualTreeがnullなのはなぜですか?アクセスする必要があります。ListViewの定義は次のとおりです。

そして、これがイベントハンドラーです。