2008-11-27 46 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>