1

目前我强制我的 WPF 应用程序使用 luna 主题无论如何,这个 XAML 代码

<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>

但是这个触发器不起作用,因为我强制使用了 luna 主题。(没有强制主题,每件事都按应有的方式工作,但看起来却不应该:()有什么方法可以强制使用 luna 主题并扩展它的样式吗?可能在 BasedOn 属性上?

atm 我为有问题的样式定义了一个键,并手动将其添加到每个文本框中,这可行,但不是最漂亮的方法。

蒂亚

4

4 回答 4

1

类型样式的 BasedOn 语法如下:

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

高温高压

于 2008-11-28T09:02:36.273 回答
1

尝试

<Style x:Key="{x:Type TextBox}" TargetType="{x:Type TextBox}">
于 2008-11-27T16:30:06.107 回答
0

您是否尝试过先设置 lune 资源字典,最后设置自己的资源字典?我可以想象 luna 主题会覆盖你的风格。

<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>
于 2011-01-11T21:08:06.793 回答
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>

于 2013-11-06T10:11:21.553 回答