2010-08-25 14 views
5

Tengo un pequeño problema con el proyecto wpf en el que estoy trabajando actualmente. Soy nuevo en WPF. En mi app.xaml estoy usando el tema Microsoft Aero para mi aplicación. Tengo algo como esto en mi App.xamlReemplazando temas en WPF

<ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/PresentationFramework.Aero;V3.0.0.0;31bf3856ad364e35;component/themes/Aero.NormalColor.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 

Ahora lo que me gustaría saber cómo reemplazar ciertas propiedades de estilo por ejemplo, En el caso de los Botones, quiero anular el estilo de fuente mientras tanto, conservando el resto del estilo aerodinámico.

Si defino un estilo para el botón en los recursos de mi ventana, p.

<Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}" x:Key="RedTextBasedOnButton"> 
      <Setter Property="Foreground" Value="Red" /> 
     </Style> 

y definir un botón basado en el estilo anterior

el botón pierde todas las propiedades de estilo aerodinámico. Creo que el problema tiene que ver con la forma en que definen la propiedadBasedOn para el estilo

BasedOn="{StaticResource {x:Type Button}}" 

No creo que el recurso es estático, ya que proviene de una DLL, que probablemente debería ser algo como esto . Aunque no estoy seguro

BasedOn="{DynamicResource {x:Type Button}}" 

pero lo anterior y lo que ha producido una excepción si tuviera múltiples ResourceDictionary en mi App.xaml por ejemplo, luna y clásico. ¿Cómo puedo decir cuál usar como predeterminado y al mismo tiempo usar y anular a otro (por ejemplo, luna) específicamente para ciertos controles en mi interfaz de usuario? ¿Entonces algunos de mis botones se basarán en el estilo luna y algunos en el estilo aerodinámico con algunas modificaciones adicionales?

¿Alguna idea?

Saludos,

+0

posible duplicado de [Anular overriden WPF temático] (http://stackoverflow.com/questions/2377055/override-overriden-wpf-theme) –

+0

¿Alguno de los estilos tienen Claves explícitas con las que podrías relacionarte? – Killnine

Respuesta

0

de tu pregunta específica sobre

por ejemplo, En el caso de los Botones, quiero anular el estilo de fuente mientras tanto, conservando el resto del estilo aerodinámico.

que iba a tratar de añadir esto en su diccionario de recursos:

<FontFamily x:Key="YourFont">Tahoma</FontFamily> 

Entonces utilizar esto en su estilo:

<Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}" x:Key="RedTextBasedOnButton"> 
    <Setter Property="FontFamily" Value="{StaticResource YourFont}"/> 
</Style> 

por lo que podría cambiar la FontFamily basado en una sola tecla.

recomiendo mirar en este http://wpfthemes.codeplex.com/SourceControl/latest#WPF.Themes.Demo/Window1.xaml