問題タブ [visualtreehelper]

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 に答える
2909 参照

c# - VisualTreeHelper.GetChildrenCount()がポップアップに対して0を返すのはなぜですか?

私はそのオープニングでポップアップに焦点を移します:

FocusHelperクラスコード:

ElementTreeHelperクラスパート:

問題は、親がポップアップの場合、var count = VisualTreeHelper.GetChildrenCount(parent)==0であるということです。

アップデート

答えはここにあります

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

c# - ページフレーム用の C# WPF VisualTree

WPF、C#、およびタブ付きページ ウィンドウでの作業。フォーム上のすべてのコントロールを循環しようとしていますが、VisualTreeHelper では失敗します。

TabControl を含むウィンドウがあり、そのタブ コントロールに 3 つの TabItems がある場合、視覚的にはすべて正常に動作します...

ただし、ビジュアル ツリー ヘルパーを使用しようとすると、可能なすべてのページではなく、アクティブな SINGLE ページに基づいてコンテンツのみが公開されます。

一度に「表示」できるのは1つだけですが、すべてのページの内容を確認する方法についてのアイデアはありますか?

私が見逃している非常に単純なものであることを願っています...

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

c# - Silverlight カスタム効果、親を取得

Effectから継承してカスタム効果を作成しようとしています。

問題は私の効果コードにあります。エフェクト プロパティの親、この場合はその楕円を取得する方法がありません。GlowEffect が (そのコンストラクターで) 構築されるときにビジュアル ツリーに楕円が読み込まれていないため、 VisualTreeHelperを使用することはできません。この問題を解決する方法が見つからないか、間違った方法で行っているだけかもしれません。

0 投票する
3 に答える
2426 参照

c# - VisualTreeHelper が DependencyObject の子を見つけられません。オブジェクトを確実に見つけるにはどうすればよいですか?

という UserControl がありZoneContainerます。これにはListBox、いくつかの を含む を含むプロパティがありますListItem。各 ListItem にはDockPanel.

ZoneContainer次のコードを使用して、内部に存在するがchildrenCount毎回0である子を見つけようとしています。

オブジェクトのリスト内で特定の子オブジェクトを見つける別の方法はありますか? 最終的には、DockPanel を見つけようとしていますが、オブジェクト内にあることがわかっていても、子が見つかりません。

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

wpf - ItemsControlのコンテナのParentプロパティが、それが置かれているPanelではなくnullを返すのはなぜですか?

これは私を困惑させました。ItemHostとしてカスタムコンテナとカスタムパネルの両方を使用するカスタムItemsControlがあります。これで、パネルには、コンテナがレンダリングの目的で必要とするいくつかのメトリックがあります。それらはビジュアルツリーのパネルの直接の子であるため、コンテナのParentプロパティはパネルを返すと思いますが、そうではありません。

また、標準のListBoxでSnoopを使用してこの正確なことを確認したので、これはコードに限定されませんが、ItemsControlsのすべてのコンテナーに限定されないようです。

これで、VisualTreeHelperを使用して視覚的な親(必要なもの)を取得できることがわかりましたが、親がパネルにならないのはなぜですか?

パネルが単にビジュアルツリーの一部であり、親が論理ツリー用に予約されているという議論の場合、親はItemsControlではないでしょうか。

コンテナもあるという引数がItemsControlのビジュアルツリーの一部であり、論理ツリーではない場合、コンテナでホストされているコンテンツがコンテナを親プロパティとして返すのはなぜですか?

つまり、データアイテムから論理ツリーをたどっている場合は、コンテナに立ち寄ります。これは、コンテナからパネルへのバインディングが期待どおりに機能しない理由を説明している可能性があります。(バインディングは視覚的な階層ではなく論理的な階層に基づいていると思いますが、確認するためにテストする必要があります。)

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

c# - wpf コントロールを反復する

私は C# に非常に慣れていないので、また迷子になりました。WPF フォームで TextBoxes を反復処理してデータをクリアしようとしています。
すべてのテキスト ボックスには、6 文字の長さの文字列の前に "TextBox" というプレフィックスが付いています。つまり、(TextBox3N1W09、TextBox3N1W10...)。私は VisualTreeHelper を使いたいと思っていますが、次のことができるほど賢くありません:
#1) 変数を渡します。親を理解していると思います。

XAML < グリッド名="ThisGrid" >

私の場合、Grid:"ThisGrid" という名前を付けましたが、TextBoxes を渡す方法がわかりません。TextBoxes の名前を反復処理して文字列として渡す必要があるかどうかはわかりません。グリッド内のすべての TextBoxes を VisualTreeHelper に表示させるだけです。
#2)これらのテキストボックス名またはテキストボックスオブジェクトが渡されると、結果をどうするかわかりません:

{
子を T として返します。
}

「T」が何なのか完全に見失いました。「T」はどうすればいいですか?メソッドで何かをする必要がありますか、それともメソッドを呼び出した場所で何かをする必要がありますか。最初に言ったように、テキストボックスをクリアしたいだけです。これはそれほど難しいことではないようですが、かなり苦労しています。

0 投票する
3 に答える
953 参照

wpf - マウスの真下にあるLogicalTreeコントロールなしVisualTree

これはWPFアプリケーションです。

私はマウスの真下でコントロールを取得しようとしていますが、それは驚くべき苦痛であることが証明されています。

Mouse.DirectlyOver、InputHitTest、およびVisualTreeHelper.HitTestはすべて、VISUALツリーを参照します。コントロール自体を取得しようとしています。

例:TextBoxがあり、上記のいずれかを使用すると、TextBoxViewが返されますが、TextBox自体が必要です。

これは、PreviewLeftButtonDownイベント内で発生しています。Senderは常にListViewItemであるため、Senderはオプションではありません。e.OriginalSourceを確認すると、それはまだVisualTree要素であり、実際のコントロールではありません。

必要に応じて、さらに説明させていただきます。

ありがとう

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

c# - LogicalTreeHelper.GetChildren - ObservableCollection Move() により、DataTemplate の ContentControl のコンテンツが失われますか?

これは非常に奇妙です。以下のコードのポイントは、コンテナーの子のいずれかがフォーカスを受け取った場合にコンテナーに通知する attachedProperty をサポートすることです。

つまり、コンテンツのどこかに textBox を持つグリッドがあり、それらのコントロールの 1 つがフォーカスされた場合にグリッドを青に変えたいとします。

ItemsTemplate を持つ ListView があります。ItemsTemplate は、いくつかのものを含む DataTemplate ですが、そのうちの 1 つは ContentControl です。

例:

ContentControl の Binding は、特定の種類の UserControl を表示する必要があります。作成時に...問題なく動作します。Grid 要素から始まる listViewItem のテンプレートを再帰的に反復すると、ContentControl の「コンテンツ」もトラバースします。

ただし... ListView ItemsSource がバインドされている ObservableCollection で .Move() を実行すると、LogicalTreeHelper によると ContentControl.Content は空になります。

何を与える?

ContentControl を調べると、コンテンツが表示されます...しかし、LogicalTreeHelper.GetChildren は Enumerator を返し、空の状態にします。

よくわかりません...

なぜこれが当てはまるのか、誰でも説明できますか?

LogicalTreeHelper 反復子メソッド

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

c# - ItemsControl コンテナのビジュアル ツリーが空なのはなぜですか?

特定のビューで特定の視覚要素にアクセスする必要があります。xaml で静的に宣言されたアイテムはいつでも利用できるため、これは簡単です。ただし、datatemplated ItemsControls は実行時にビジュアル ツリーを生成します。たとえば、TabControl子 ViewModel の Collection へのバインド。

によって作成されたビューにアクセスする必要がありますItemContainerGeneratorStatusChangedのイベントに接続しようとしましたが、正常に起動し、コンテナー( の場合)ItemContainerGeneratorを正常に取得できます。ただし、を使用して子を取得すると、空になります。TabControlTabItemVisualTreeHelper

TabItemのビジュアル ツリーが空である理由はありますか? これを達成するためにフックする必要がある別のイベントはありますか?