在resourcedictionary中声明的样式不适用于组合框

时间:2014-03-07 18:05:27

标签: wpf xaml

我有一个资源字典如下:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style TargetType="{x:Type ComboBox}">
        <Setter Property="IsEditable" Value="True" />
    </Style>
</ResourceDictionary>

在我的app.xaml中:

<Application x:Class="Client.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/Resources/ComboBoxResourceDictionary.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

更新

在我的Page.xaml:

<Page.Resources>
    <Style TargetType={x:Type ComboBox}>
        <Setter Property="FontSize" Value"20" />
    </Style>
</Page.Resources>

<ComboBox....... />

但仍然无法编辑组合框。上面提到的代码有什么问题吗?

1 个答案:

答案 0 :(得分:1)

由于您在页面资源下提供了另一种默认样式,所有位于页面下的组合框都不会选择在应用资源下声明的样式。

你应该继承使用 BasedOn 这样在App 下声明的样式:

<Style TargetType="{x:Type ComboBox}"
       BasedOn="{StaticResource {x:Type ComboBox}}">
   <Setter Property="FontSize" Value="20"/>
</Style>