提供全局主题并在某些控件上强制执行默认样式

时间:2018-03-22 15:10:48

标签: wpf xaml theming

我已将MaterialDesignInXamlToolkit主题应用于App.xaml中的应用程序。使用此机制设置应用程序菜单和对话框的样式效果很好,但我们的应用程序还允许用户创建自己的表单并自定义许多WPF控件的属性。

我需要确保全局样式不适用于任何这些用户自定义控件。应用程序中只有两个UserControl元素可以由用户自定义控件组成。要取消全局主题,我在UserControl.Resource部分中提供了默认样式的资源字典,如下所示:

UserCustomizableForm.xaml

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="../DefaultWPFSyles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</UserControl.Resources>

其中DefaultWPFStyles.xaml只是我们允许用户自定义的任何控件的默认样式列表:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <Style TargetType="Border"/>
    <Style TargetType="Button"/>
    <Style TargetType="Canvas"/>
    <Style TargetType="CheckBox"/>
    <Style TargetType="ComboBox"/>
    <Style TargetType="ComboBoxItem"/>
...
</ResourceDictionary>

我还没有设计出另一种方法来强制将指定UserConrol下的所有控件强制为默认样式carte-blanche。我希望有人可以提出一种方法,如果我忽略了它。

0 个答案:

没有答案