我已将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。我希望有人可以提出一种方法,如果我忽略了它。