cómo configurar el z-index windowsformhost que no siempre están en la parte superior del elemento WPF?WindowsFormsHost siempre es la parte más alta del elemento WPF
Respuesta
Según MSDN (Layout Considerations for the WindowsFormsHost Element)
a Alojado control de Windows Forms se dibuja en un HWND separado, por lo que es siempre dibujado en la parte superior de los elementos de WPF.
Esta es una limitación de diseño
Otro buen artículo de MSDN que explica los posibles problemas cuando se utilizan diferentes tecnologías de gráficos en Windows es Technology Regions Overview
Sin embargo buscando en Google encontré que parece que hay algunos hackings de este (conocida como la restricción del espacio aéreo)
Un truco (nunca había probado personalmente así que no sé si funciona) es al this link
enlace "hackear" 403s – RJFalconer
actualización, unos años más tarde (2016-09):
Mi siguiente respuesta, como lo señala el comentario arriba, ya no es válida, y no estaba disponible en la versión final de .NET 4.5, o versiones posteriores. Desafortunadamente, el enlace que incluí aún tiene información de ordenamiento z para HwndHosts presente para la "versión actual" de .NET, lo que podría llevar a algunos a creer que esta funcionalidad, de hecho, existe. No es así No hay solución alternativa.
Respuesta original:
Un año más tarde, las cosas han cambiado un poco con .NET 4.5. Para los que se topó con esto, tanto como lo hice, aquí es un extracto más actualizada de Walkthrough: Arranging Windows Forms Controls in WPF en MSDN:
Por defecto, los elementos WindowsFormsHost visibles siempre están dibujados por encima de otros elementos de WPF, y son no afectado por el orden z Para habilitar el orden z, establezca la propiedad IsRedirected de WindowsFormsHost en true y la propiedad CompositionMode en Full o OutputOnly.
Todo lo que tiene que hacer, cuando se utiliza .NET 4.5, es añadir los siguientes atributos para el elemento de WindowsFormsHost IsRedirected="True"
y CompositionMode="Full"
oCompositionMode="OutputOnly"
.
Lo comprobé hoy: estas propiedades solo se encontraban en la versión beta de .net 4.5. desafortunadamente no llegaron a la versión normal. –
1.3.10 Windows Presentation Foundation (WPF) 1.3.10.1 La característica HwndHost se ha eliminado de WPF en .NET Framework 4.5 Beta La .NET Framework 4.5 Developer Preview incluía una característica de redirección WPF HwndHost. Sin embargo, esta característica tenía varios problemas conocidos y se eliminó de .NET Framework 4.5 Beta. No se incluirá en ningún lanzamiento futuro. Para resolver este problema: No hay solución disponible. – lukaszk
¿Cómo usarlo en .NET 4? ¿Es posible? – mrhands
Acabo de encontrar el mismo problema.
Existe un potencial solución - dependiendo de la naturaleza del control de la ventana de host de Windows y el elemento de WPF que desea que aparezca:
que limitan el control WindowsFormsHost
de Visibility
a una propiedad en mi modelo de vista para que yo pueda para ocultar el host (y los controles) cuando quiero mostrar el WPF que queremos que aparezca sobre él.
En mi situación, mi WindowsFormsHost está en una cuadrícula de dos filas.La fila inferior tiene un StackPanel que cambia de altura en función de lo que contiene. Manejo el evento LayoutUpdated de ese StackPanel para redimensionar mi WindowsFormsHost restando su actualHighight del realHeight de Grid. Asegúrese de utilizar ActualHeight y no Height.
void ResizeWinhost()
{
mainGrid.UpdateLayout();
detailPanel.UpdateLayout();
winHost.Height = mainGrid.ActualHeight - detailPanel.ActualHeight - 5;
}
- 1. WPF WindowsFormsHost dimensionamiento
- 2. ¿Cómo mantener mi ventana más alta en la parte superior?
- 3. WPF Popup y WindowsFormsHost Problema
- 4. WindowsFormsHost ZOrder
- 5. WPF WebBrowser (3.5 SP1) Siempre en la parte superior: otra sugerencia para mostrar HTML en WPF
- 6. ¿Es WindowsFormsHost adecuado para el propósito (.net WPF hosting WinForms)?
- 7. Ver un PDF en WPF sin utilizar WindowsFormsHost
- 8. Renderizar control WPF encima de WindowsFormsHost
- 9. ¿La sección crítica es siempre más rápida?
- 10. gravatar resolución más alta
- 11. WPF WindowsFormsHost no genera gestos de teclas no tratadas
- 12. Propietario de la ventana en WPF sin comportamiento siempre en la parte superior
- 13. ¿Cuál es la forma más simple de jQuery de tener una div 'posición: fija' (siempre en la parte superior)?
- 14. Enfrente de "siempre en la parte superior"
- 15. ¿Cómo puedo saber cuándo WindowsFormsHost está redimensionando en WPF?
- 16. ¿Cuándo puedo disponer de un control WPF IDisposable, p. WindowsFormsHost?
- 17. Latencia NHibernate es muy alta
- 18. Mover un elemento DIV a la parte inferior del elemento principal (como último elemento secundario)
- 19. ¿Es posible grabar un video mientras se está reproduciendo otro video en la capa más alta?
- 20. Relleno la parte superior y la parte inferior del elemento en línea
- 21. ¿Mantener el elemento de encabezado siempre en la parte superior cuando se desplaza?
- 22. Cómo encontrar la fecha más alta (más reciente) y la más baja (anterior) [R]
- 23. siempre en la parte superior div dentro de la zona
- 24. Visual Studio siempre en la parte superior al depurar
- 25. Ventana del propietario de WPF en la parte superior de la ventana secundaria
- 26. Gráfico de formas de ventana en WindowsFormsHost no recibe la rueda del mouse?
- 27. ¿Cómo obtener cualquier identificador de la actividad más alta?
- 28. Selección de TSQL distinta según la fecha más alta
- 29. HTML Agility Pack: ¿cómo se puede agregar un elemento en la parte superior del elemento principal?
- 30. ¿Cómo es que esta parte del código Haskell es más conciso?
Respuesta simple: no se puede. Ver [aquí] (http://stackoverflow.com/questions/8006092/controls-dont-show-over-winforms-host). – Clemens