1

WPFで EMF/WMF メタファイルをサポートするために、プロジェクトをhttps://silverlightcontrib.codeplex.com/ から WPF (github https://github.com/jogibear9988/silverlightcontrib ) に変換しました。

今私の問題は、EMF クラスはコンテンツを表示するために ContentControl を使用することです。Content も設定されていますが、何も表示されません。WPF-Inspector で確認すると、EMF コントロールのコンテンツが「論理ツリー」にリストされていますが、ビジュアルにはリストされていないことがわかります。誰でもこれで私を助けることができますか?

フォークの現在の状態はオンラインです (誰かがコードを見てくれれば!)

スヌープを見ると、すべて問題ないようです。

ここに画像の説明を入力

ご覧のとおり、Content Presenter には Content セットと Filled がありますが、Visual Tree には入りません...

WPF インスペクターの論理ツリーは次のとおりです。 ここに画像の説明を入力

そしてここにビジュアル: ここに画像の説明を入力

4

3 に答える 3

1

最も可能性の高い 2 つの問題は、何も持たないContentControlを使用していること (特にデフォルトプロパティ以外のものを使用している場合)と、その として空の を使用していることです。実行時に検査することで、これらのいずれかを確認できるはずです。ControlTemplateContentPresenterContentDataTemplateContentTemplate

于 2014-05-05T13:37:18.120 に答える
1

私は Silverlight にはあまり詳しくありませんが、WPF では、オーバーライドMeasureOverride(...)ArrangeOverride(...)て、コントロールの子を測定および配置して、子などを測定および配置できるようにする必要があります。あなたの場合、から継承するクラスにbase.MeasureOverride(...)およびへの呼び出しを含める必要があります。base.ArrangeOverride(...)EmfContentControl

于 2014-05-12T14:29:32.913 に答える
0

これはよくわかりませんが、サイジングと関係があります。Snoop では RenderSize が 0,0 で、インスペクターでは実際の高さ/幅も 0 として表示されます。インスペクターが要素の周りに描画する赤いハイライトが、長方形ではなく小さな点​​であることがわかります。EMF コントロールには、WPF に直接移植されない Silverlight 固有の動作がいくつかあると推測しています。

于 2014-05-09T02:43:26.813 に答える