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

c# - WPF UIElement をビジュアル ツリーから FixedPage に移動するには?

私の MVVM アプリケーションは、画面上のビジュアル オブジェクトを使用して、画面のコンテンツを印刷されたドキュメントにレンダリングしています。私のビューには、リソースをContentControl使用しDataTemplateて何を表示するかを決定する がありますが、そのコンテンツをFixedPageオブジェクトに追加しようとするArgumentExceptionと、次のメッセージが表示されます。

指定された Visual は、既に別の Visual の子であるか、CompositionTarget のルートです。

印刷を処理するビューの (簡略化された) XAML コードは次のようになります。

...そして、問題のある印刷ボタンクリックハンドラーのコードビハインドは次のようになります:

問題を解決するために次のことを試しましたが、すべて成功しませんでした。

  • ContentのメンバーContentControlを nullに設定します (上記のコードのように)。
  • 設定this.Content=null。画面が空白になりますが、それでも例外が発生します。
  • RemoveLogicalChild()さまざまなコントロールでの使用。どれもうまくいきませんでした。
  • とオブジェクトで使用RemoveVisualChild()します。どちらも現在のオブジェクトの子ではありませんでした。printContentControlcontent
  • またはが`{x:Null}' のDataTrigger場合、XAML で s を使用してテンプレートを置き換えます。無効。ContentDataContextContentControl

印刷コマンドを実行すると がViewModel変わるので、画面の外観が乱れても問題ありません。View

printContentControlのビジュアル コンテンツ (またはコントロール全体) をViewのビジュアル ツリーからViewModelFixedPageオブジェクトに移動するにはどうすればよいですか?

汚い回避策

印刷するコンテンツのラッパー クラスを作成することで、機能を動作させることができますが、元の質問には答えません。

ラッパークラス

ラッパーを使用して印刷可能なコンテンツを保持する XAML を更新しました。

ラッパーから印刷可能なコンテンツを取得するためにコードビハインドを更新

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

c# - 外部アプリの RootVisual を取得できないのはなぜですか?

私は WPF で自動テスト フレームワークに取り組んでいます。基本的な WPF 自動化フレームワークを使用してほとんどのことを自動化することは可能ですが、UI レベルで何が起こっているかを詳細に把握することは非常に困難です。DataContext のプロパティやコントロールのプロパティなどを確認できる必要があります。スヌープができるから、これが可能であることを私は知っています。Snoop を使用すると、任意の WPF アプリのビジュアル ツリー全体をトラバースできます。この機能が必要です。だから、私はこのコードを書きました:

コードは最後の 2 行目まで機能します。最後から 2 番目の行は null を返しますが、その理由がわかりません。windowHandle は返されますが、HwndSource は返されません。ここで何がうまくいかないのですか?