2010-05-05 30 views
5

Necesitamos tener clics del mouse y drags "ignorados" por nuestro View1 pero la información sobre herramientas aún debe funcionar en esa vista. La razón es que View1 está por encima de View2 en Z-Order, por lo que View1 puede matizar View2 en color rojo y mostrar una advertencia a través de la información sobre herramientas; sin embargo, la información sobre herramientas que acompaña a View1 no funcionará si IsHitTestVisible = "False".XAML ToolTip + IsHitTestVisible = "False"

¿Alguien sabe algo de alrededor para que la información sobre herramientas se muestre en el movimiento del mouse/sobre y el resto de los eventos del mouse son ignorados por View1 y van a View2?

Gracias,

Sean

Respuesta

2

Lo que hice, que no es muy grande:

private void UserControl_Loaded(object sender, RoutedEventArgs e) 
    { 
     var parentWindow = Window.GetWindow(this); 
     var source = PresentationSource.FromVisual(parentWindow) as HwndSource; 

     source.AddHook(WndProc); 
    } 

    private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) 
    { 
     // Handle messages... 
     if (msg == WM_MOUSEMOVE) 
     { 
     ...show tool tip if mouse is over it 
     } 
     return IntPtr.Zero; 
    } 
0

no se establece la IsHitTestVisible="False"!

Sólo añadir esas líneas

IsEnable = false 
ToolTipService.ShowOnDisabled="True" 
+3

IsEnable cambia el estilo del componente. –

2

Si alguien se enfrenta mismo problema, que puede ser útil. Tuvimos el requerimiento de desactivar algunas filas en la cuadrícula de datos, pero al mismo tiempo permitimos que las teclas de flecha naveguen sobre ellas. Es por eso que tuvimos que cambiar a IsHitTestVisible en lugar de controlar la propiedad IsEnabled. Entonces no podríamos adoptar la solución anterior de cambiar a la propiedad IsEnabled.

Así es como terminé resolviendo este problema. Creé una nueva propiedad adjunta RowEnable para DataGridRow. Esta propiedad adjunta se puede vincular a una propiedad de modelo de vista para controlar virtual habilitar y deshabilitar. También creé un nuevo estilo para DataGridCell donde estoy configurando IsHitTestVisible a false según la misma propiedad de viewmodel. Por lo tanto, considérelo como una fila que el mouse/teclado puede ver, pero no puede ver sus celdas/columnas. Esto significa que ahora puedo diseñar la fila según la nueva propiedad adjunta RowEnabled para que parezca deshabilitada/habilitada. Al mismo tiempo, puedo ver la información sobre herramientas para estos remolques que están virtualmente deshabilitados.

Espero que esto ayude !!