14

私はWinFormsコントロールを持っています。その中には、TableLayoutPanel複数を保持しElementHosts、それぞれElementHostにWPFコントロールが含まれているがあります。

コントロールのサイズがウィンドウよりも大きく、ScrollBarそこにある場合を除いて、すべてが正常に機能します。下にスクロールすると、コントロールが次のように歪んでレンダリングされます-

ここに画像の説明を入力してください

ウィンドウを最大化またはサイズ変更すると、コントロールは適切にレンダリングされます(コントロールが表示領域から外れるようにサイズを縮小してから、サイズを再度大きくして表示領域に戻します)

これは、同じウィンドウ内のWinFormsコントロールでは発生しません。WPFコントロールだけです。なぜこれが起こっているのか、そしてこれに対する解決策はありますか?

4

3 に答える 3

15
this.Loaded += delegate
{
    var source = PresentationSource.FromVisual(this);
    var hwndTarget = source.CompositionTarget as HwndTarget;

    if (hwndTarget != null)
    {
        hwndTarget.RenderMode = RenderMode.SoftwareOnly;
    }
};

ホストしている wpf コントロールでそれを使用してみてください。これは、win フォームでホストされている wpf コントロールの既知のレンダリングの問題です。レンダリング モードをソフトウェアのみに変更すると、問題が解決します。

于 2012-09-28T08:59:43.943 に答える
1

同様の問題がありElmenetHost、のスクロールイベントで強制的に更新することを解決しましたTableLayoutPanel

于 2012-08-16T09:21:37.973 に答える
0

わかりました、これは完全なBSのように聞こえますが、私にとってはうまくいきました.フォームのLoad場合は、フォームのサイズを変更してください.

public class MyForm : Form
{
   public MyForm()
   {
      Load += (o, e) => { Width -=1; Width +=1; };
   }
}

フォームのサイズが変更された後、表示の問題を強制できませんでした。

于 2015-07-30T23:07:41.610 に答える