2011-03-30 8 views
22

Configuré una carga de recursos SolidColorBrush y LinearGradientBrush en un ResourceDictionary. Los usé porque estaba rediseñando varios controles para usar en nuestra aplicación.Cómo señalar un recurso (un SolidColorBrush) en otro

Ahora tengo un montón de otros pinceles externos que tengo que usar para una variación en nuestra aplicación. Estos también se configuran en un ReseourceDictionary.

¿Es posible apuntar mis recursos de pincel a los recursos nuevos en otro diccionario, algo similar al atributo "Basado en" de Estilos?

Algo como esto, al menos conceptualmente:

<SolidColorBrush x:Key="MyDataGridHeaderBrush" Binding="HeaderBrushDefinedElsewhere"/> 

... o es este tipo de cosas no es posible, en cuyo caso simplemente tengo que ir a hacer un buscar/reemplazar y sustituir todos mis nombres de pincel con los nuevos nombres de pincel?

Gracias de antemano,

AT

Respuesta

29

estoy de acuerdo con lo que dijo Rachel, pero si usted tiene que basar en una SolidColorBrush existente, puede hacerlo con el siguiente:

<SolidColorBrush x:Key="MyDataGridHeaderBrush" 
       Color="{Binding Source={StaticResource HeaderBrushDefinedElsewhere}, Path=Color"/> 

Nota esto sólo funciona para el atributo "Color", se Tendría que hacerlo por separado para cada atributo que necesitara.

+0

¡Brillante! Ahora puedo comenzar a conectar en cascada como quiero. –

+2

Perfecto, esto es lo que he estado buscando gracias. Debo señalar que te falta el corsé de cierre ;-) – user2109254

8

Por lo general hago una propiedad estática de color en un solo lugar, y tienen mis pinceles se unen a ese color.

<SolidColorBrush x:Key="LightColor" Color="#C5DBF6"/> 
<SolidColorBrush x:Key="DarkColor" Color="#FF8DB2E3"/> 

<LinearGradientBrush x:Key="FadeOutRight" EndPoint="1,1" StartPoint="0,0"> 
     <GradientStop Color="{Binding Source={StaticResource LightColor}, Path=Color}" Offset="0" /> 
     <GradientStop Color="{Binding Source={StaticResource DarkColor}, Path=Color}" Offset="1"/> 
</LinearGradientBrush> 

También puede enlazar otros SolidBrushColors a esto:

<SolidColorBrush Color="{Binding Source={StaticResource LightColor}, Path=Color}" /> 

Si esto se hace referencia en otro archivo, es posible que subrayar que, ya que no puede encontrar el recurso estático, pero en tiempo de ejecución Será todavía compilar proporcionando su archivo principal de recursos que contiene sus definiciones de pincel está cargado.

+1

¿Ha cambiado esta funcionalidad desde 2011? Me aparece un error "Un objeto del tipo System.Windows.Media.SolidColorBrush no se puede aplicar a una propiedad que espera el tipo System.Windows.Media.Color" usando exactamente el mismo ejemplo anterior (es decir, paradas de gradiente) . – Grim

+0

@Grim Podría ser mejor si crea una pregunta por separado con el XAML que está utilizando. No creo que haya cambiado nada, pero podría estar equivocado. – Rachel

+0

Sí, parece que no funciona asignar un solidColorBrush a la propiedad de color por desgracia. Al menos, el diseñador se queja y se niega a actualizar el color cuando se cambia el color al que se hace referencia. – David

Cuestiones relacionadas