2008-11-27 79 views
2

目前,我强迫我的WPF应用程序使用luna的主题,不管是什么,这个XAML代码我如何从Windows主题继承/覆盖强制样式?

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="Styles.xaml" /> 
      <ResourceDictionary Source="NavigationCommands.xaml" /> 
      <ResourceDictionary Source="/RibbonControlsLibrary;component/Themes/Office2007Blue.xaml"/> 
      <ResourceDictionary Source="/PresentationFramework.Luna, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;;component/Themes/luna.normalcolor.xaml" /> 
      </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

,现在我想与此验证触发

<Style TargetType="TextBox"> 
    <Style.Triggers> 
     <Trigger Property="Validation.HasError" Value="true"> 
      <Setter Property="Background" Value="#d3e1f3"></Setter> 
      <Setter Property="ToolTip" 
      Value="{Binding RelativeSource={RelativeSource Self}, 
        Path=(Validation.Errors)[0].ErrorContent}"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 
延长每一个文本框的样式

但这个触发器不起作用,因为我强制月神主题。 (没有强制的主题,每一件事情都应该如此,但看起来应该如此:() 有没有办法强制月亮主题并扩展它的风格?可能在BasedOn属性上?

atm i定义有问题的风格的关键,并把它添加到由专人每文本框,即工作,但不是去最漂亮的方式。

TIA

回答

1

尝试

<Style x:Key="{x:Type TextBox}" TargetType="{x:Type TextBox}"> 
+0

,做基础的风格的人不工作,但无论如何谢谢 – 2008-11-28 08:27:49

1

的支持算法FMP语法类型样式如下:

<Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}"> 

HTH

+0

没有运气:( 的方法ov er basedon属性不起作用。风格被忽略。 谢谢。 – 2008-11-28 10:24:34

0

你试过设置半月形的ResourceDictionary第一和自己的ResourceDictionary持续多久? 我可以想象,月神主题覆盖了你的风格。

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/PresentationFramework.Luna, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;;component/Themes/luna.normalcolor.xaml" /> 
      <ResourceDictionary Source="/RibbonControlsLibrary;component/Themes/Office2007Blue.xaml"/> 
      <ResourceDictionary Source="Styles.xaml" /> 
      <ResourceDictionary Source="NavigationCommands.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 
0

使用提到

<Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}"> 

而且还确保您的字典都包含在正确的顺序 - 首先,你是在

<Application.Resources> 
<ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="/RibbonControlsLibrary;component/Themes/Office2007Blue.xaml"/> 
     <ResourceDictionary Source="/PresentationFramework.Luna, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;;component/Themes/luna.normalcolor.xaml" /> 

     <ResourceDictionary Source="Styles.xaml" /> 
     <ResourceDictionary Source="NavigationCommands.xaml" /> 
    </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary>