問題タブ [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 に答える
482 参照

c# - wp7のビジュアルツリーで要素を見つける方法は?

ビジュアルツリーで要素を見つける必要があります。たとえば、グリッドがあり、ExpanderView が展開するときに tbox:WatermarkTextBox に独自のテキストを設定する必要があります。xaml

c#

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

wpf - DataGrid にその列の VisualTree を再構築させる方法

DataGrid を使用した WPF フォームがあります。ボタンを使用して、ユーザーが手動で新しい列をデータグリッドに追加できます。これは、新しい列を追加するコードです。

問題は、列をグリッドに追加した後、そのヘッダーがまだ生成されておらず、ビジュアル ツリーに存在しないことです。したがって、新しい列のヘッダーを取得して、それに装飾を適用することはできません。グリッドのビジュアル ツリーで ApplyTemplate を再帰的に呼び出そうとしましたが、うまくいきませんでした。

コードで新しい列の DataGridColumnHeader を生成するようにグリッドを強制する方法はありますか?

前もって感謝します。

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

wpf - ビジュアル ツリーを反復せずに、テンプレート列の入れ子になったコントロールから DataGridCell を取得する

DataGridCell は、コントロールの VisualTree に表示されません。

グリッド内のスタック パネルに Rectangle と Label を含む DataGridTemplateColumn があります。

親要素がnullになるPreviewMouseLeftButtonDownまで、イベントがビジュアルツリーを上向きに反復するようにしたかったのです。DataGridCellGrid

以下のリンクを読むと、DataGrid のビジュアル ツリーで、UIControls が の content プロパティとして設定されているようDataGridCellです。では、Rectangle から DataGridCell を取得するにはどうすればよいでしょうか。

http://blogs.msdn.com/b/vinsibal/archive/2008/08/14/wpf-datagrid-dissecting-the-visual-layout.aspx

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

c# - Prism でビジュアル ツリーの作成を強制する

含まれているTabControlPrism 領域があります。特定のイベントに対して何らかの通知 (タブ ヘッダーの点滅など) をトリガーしたいのですが、Prism 領域のコンポーネントからこの通知をトリガーしたいと考えています。

このようなコンポーネントを含むタブが一度開かれると、これを使用VisualTreeUtil.GetParent()してうまく機能し、それを見つけてTabControl通知を示すように変更できるようになります。

VisualTreeUtil.GetParent()しかし問題は、 null を返すため、ユーザーがタブを開くまでこれが機能しないことです。明らかに、Prism はそれまでビジュアル ツリーを接続しないためです。

領域を含む を呼び出しUpdateLayout()TabItemも役に立ちません。ユーザーを混乱させるため、TabItems をプログラムで開きたくありません。

ある種の地域レジストリを実装する以外にできることはありますか (これはかなり醜く、維持するのが難しいでしょう)?

コードを見たい場合は、問題を示すための最小限の解決策を書きました。[構造を印刷] ボタンは、2 番目のタブの (最初はレンダリングされていない非表示の) hello TextBlockからビジュアル ツリーを上に移動しようとします。タブに切り替える前に、TextBlock のみを出力します。その後、ビジュアル ツリーのルートに到達します。これは、タブに切り替えずに達成したいことです。

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

.net - ビジュアルツリーを歩くのは悪い習慣ですか?

最近、ビジュアル ツリーをたどることが悪い習慣であるというコメントをいくつか見ましたが (ここでは、たとえば)、これが悪い習慣である理由を見たり見つけたりしていません。

私が取り組んでいるプロジェクトでは、かなりのツリー ウォーキングがあるので、わざわざこれをすべて別のものに変更するか、そのままにしておくかを考えています。

したがって、ここでの私の主な質問は、ビジュアル ツリー ウォーキングが本当に悪い習慣であるかどうか、さらに重要なことに、そうである場合、なぜでしょうか?

また、視覚的なツリーをどこで (あるとしたら?) 歩けばよいでしょうか?

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

wpf - Caliburn.Microメッセージバブリングがコントロールをスキップする

階層コレクションがあり、サイズが大きいため、最下位レベルを遅延ロードします。

私がアクティブにしようとしているアクションはCollectionHolderManagerにありますが、バブリングが何らかの理由でそのビジュアルレイヤーをスキップしているようです。

したがって、TopLevelCollectionにアクションがある場合、それが呼び出されます。

CollectionHolderManagerを所有するViewModelにある場合は呼び出されますが、CollectionHodlerManager自体にある場合は呼び出されません。なぜそれをスキップするのですか?

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

wpf - WPF印刷の大規模なカスタムコントロール

重複している場合は申し訳ありませんが、関連するものは見つかりませんでした。

持っているカスタムコントロールからXpsDocumentを作成しようとしています。カスタムコントロールは、本文に加えて、ヘッダーとフッターのプロパティをすでに定義しています。

アイデアは、同じコントロール(またはその派生物)をカスタムDocumentPaginatorへの入力として使用できるようにすることです。このコントロールは、すべてのページにヘッダーとフッターを配置して、その「レポート」のプリンター対応バージョンを作成します。本体内のコントロールが完全に表示されます(コントロール全体のビットマップを作成してから、拡大縮小してページの終わりにカットしたくありません)。

ユーザーコントロールのコンテンツをページに分割する方法についてのアイデアはありますか?または、コントロールをページに印刷するための別の方法に関する提案はありますか?

よろしくお願いします

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

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

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

FocusHelperクラスコード:

ElementTreeHelperクラスパート:

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

アップデート

答えはここにあります

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

c# - 現在のピボットページの視覚要素

私はC#、Silverlight、Visual Studio for WindowsPhone7を使用しています。

ピボット中に画面に現在表示されている視覚要素のみを取得することに興味があります。たとえば、ピボットに5つのPivotItemを含めることができますが、各フリックの後に表示されているアイテムのみを取得したいと思います。

現在、ビジュアルツリーからピボット全体を取得でき、明らかに特定のピボットアイテムを選択できます。ただし、画面上の現在のピボットのみを取得できるようにしたいと思います。最終的な目標は、現在のPivotItemに関係なく、画面上の要素の絶対位置を取得することです。

これは可能ですか?もしそうなら、どのように?

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

wpf - 親が成功したときに子要素を別の要素にバインドすると、バインドが失敗するのはなぜですか?

3番目のUIオブジェクト(この例ではボタン)を参照できる2つのクラスがあるとします。

さらに、親クラスには子クラスの要素を含めることができます。

両方が同じコントロールにバインドされている場合、同じ方法で、子は失敗しますが、親は成功します。

これはWPFのバグですか?


親 :


そして子供:

わかった -

次に、次のようにXAMLに追加するとします。

まったく同じ表記を使用しているのに、バインディングが親で機能するのに子で失敗するのはなぜですか?


これが私のテストコードです...

そして、これがテスト結果です...

親ボタンの参照はSystem.Windows.Controls.Buttonです。

子ボタンの参照はnullです!