En general, en formas de las ventanas llamando .Invalidate() en un control hará que se vuelva a pintar en sí (a través de la configuración de validación de todo el control de Rect de "sucio" y luego dejar que invocan su propio evento de dibujo de forma asíncrona. - Si sólo invoca el método de pintura en winforms sin Invalidar principio, sólo será capaz de volver a dibujar la parte que fue previamente'sucio'' - como Windows utiliza el Dirty Rectangles approach para ahorrar tiempo de redibujo)
. Con suerte, puede invocar .Invalidate() en el control de host de WPF o simplemente invocar .Invalidate() en el formulario (por ejemplo, "this.Invalidate();")
Habilitar el doble almacenamiento en memoria también puede ayudar, pero no estoy seguro de esto; sin embargo, vale la pena el experimento.
@Hasan anterior se dio parte de la respuesta - la forma de gancho en el suministro de mensajes de Windows que y recibir notificaciones de eventos ventanas de energía - pero por sí sola no hará que su ventana para volver a pintar (por lo menos de lo que pueda decir) - es más una notificación que dice "hey, estás a punto de tener ese problema que odias. Apesta ser tú".
Así que este es probablemente tan simple como conectar en cosas suministro de mensajes de Hasan y luego llamar "this.Invalidate();" cada vez que se recibe una notificación de evento de potencia. Aunque esa solución puede ser un poco exagerada.
Si eso no es suficiente que necesita hacer que el control de WPF en sí para invalidar ... lo que no puede hacer, ya que no tiene ese método. La documentación sugiere que .InvalidateVisual() es el equivalente, pero mi experiencia me ha llevado a creer lo contrario. Aparte de invalidar en el nivel winform, no puedo ayudarte. Si encuentra la respuesta, ¡por favor publíquela!
No estoy seguro de si esto es posible, pero ¿puede obligar al WPF a volver a pintar mediante el enganche en el evento OnPaint de Windows? No estoy seguro de cómo funcionaría esto a través de la interoperabilidad, pero vale la pena intentarlo. http://msdn.microsoft.com/en-us/library/system.windows.forms.control.onpaint.aspx – stuartmclark
No anule OnPaint, el control de host ya tiene un OnPaint funcionamiento, sólo tiene que ser se le dijo que se rediseñase, por ejemplo, llamando a Invalidate(); consulte mi publicación a continuación para obtener más información. – BrainSlugs83