阻止UserControl加载ResourceDictionaries

时间:2017-01-30 16:30:52

标签: c# wpf xaml mvvm resourcedictionary

我目前正在使用线程实现打印。到目前为止(几乎)没有问题 虽然我通过将ResourceDictionaries添加到我想要打印的视图中来修复它,但我在xaml解析异常中遇到了一段时间。该视图显然会尝试在app.xaml调用中加载测试项目InitializeComponent中定义的ResourceDictionaries。 我们正在使用可在运行时更改的主题。他们也有一些全球风格。

现在问题是...... 有一种方法可以阻止UserControl加载app.xaml中定义的ResourceDictionaries或{{1}中的任何其他位置}

基本上,应用程序中的所有视图都使用当前主题和样式,而用于打印的InitializeComponent应该不使用样式而根本不使用UserControl

1 个答案:

答案 0 :(得分:0)

我通过创建一个新主题“解决”了这个问题,默认情况下会覆盖所有使用的控件样式。仅在ResourceDictionary资源中包含此UserControl将使用WPF默认样式。

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/MyAssembly;component/Themes/Theme.Nothing.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</UserControl.Resources>

ResourceDictionary的几行:

<Style TargetType="{x:Type Slider}"/>
<Style TargetType="{x:Type TabControl}"/>
<Style TargetType="{x:Type TabItem}"/>
<Style TargetType="{x:Type TextBlock}"/>
<Style TargetType="{x:Type TextBox}"/>
<Style TargetType="{x:Type ToolTip}"/>