2

こんにちは私はこの質問と同様の問題を経験しています。

私にとっての違いは、WinForms-MainFormで「CreateParams-Method」を使用してダブルバッファリングを強制していることです。このためのコードは次のとおりです(たとえば、DataGridViewが間違って描画します):

protected override CreateParams CreateParams
{
    get
    {
        // Activate double buffering at the form level.  All child controls will be double buffered as well.
        CreateParams cp = base.CreateParams;
        cp.ExStyle |= 0x02000000;   // WS_EX_COMPOSITED
        return cp;
    }
} 

私の問題は、このCreateParamsがアクティブ化されている限り、WinForms-UsercontrolのWPF-ElementHostのコンテンツは、マウスオーバーイベントが発生した場合にのみ描画されることです。

簡単な説明:UserControlは「開きます」が、透過的です。マウスで移動すると、たとえばComboBoxが描画されます。

CreateParamsをコメントアウトするとすぐに、すべてが正常に機能します(WPF-ElementHostを使用)。WPFElementHostに対して異なるCreateParamを非アクティブ化/使用することは可能ですか?

4

1 に答える 1

0

WPF コントロールのレンダリング モードを変更すると、うまくいきました。

private void Control_Loaded(object sender, RoutedEventArgs e)
{
    HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource;
    HwndTarget hwndTarget = hwndSource.CompositionTarget;
    hwndTarget.RenderMode = RenderMode.SoftwareOnly;
}
于 2015-06-17T14:22:49.383 に答える