2009-12-23 8 views
6

Necesito establecer el fondo de un control para el color del fondo del padre en XAML. ¿Por qué no simplemente hacer que el fondo sea transparente? Es un botón con una sombra paralela, así que necesito establecer el fondo; de lo contrario, se mostrará la sombra paralela.XAML: Obtener el fondo principal

Entonces, desde el marcado de mi control, ¿cómo configuro la propiedad de Fondo igual a cualquiera que sea el fondo padre (host)? Gracias por tu ayuda.

Respuesta

11

Usted debe ser capaz de establecer el uso de la unión:

<Button Background="{Binding Path=Background, RelativeSource={RelativeSource Mode="FindAncestor" AncestorType="{x:Type Control}" AncestorLevel="1"}}" /> 

Desde el fondo se define para cualquier "control", esto debe agarrar el control de un antepasado en el árbol, y el uso de él es el fondo.


Otra opción a considerar sería hacer sólo un estilo de botón que muestra el fondo como transparente, pero en realidad todavía señala a la sombra de la gota/frontera. Esto le permitiría trabajar en cualquier UIElement.

+0

Esto apunta al problema, por cierto: Es bastante obvio que el padre no es necesariamente un 'Control' (podría ser cualquier azar' UIElement'), y por lo tanto no es necesario tener una propiedad de "Antecedentes" en primer lugar. Pero eso no significa que no dibuje realmente uno ... –

+0

Bueno, desafortunadamente, solo Control tiene un fondo, por lo que para enlazar con el fondo del padre, tendrías que enlazar a un Control. Eso hace que esto sea menos que perfecto, sin embargo. Voy a editar con otra opción ... –

8

Voy a dejar la respuesta de Reed como aceptada, ya que responde mi pregunta original. Pero descubrí que realmente necesito enlazar a la ventana en la que está alojado el botón. Aquí está marcado para hacer eso:

<Button Background="{Binding Path=Background, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}">My Button</Button> 
+0

+1 exactamente lo que estaba buscando. – BSalita

Cuestiones relacionadas