阻止 UserControl 加载 ResourceDictionaries
Prevent UserControl from loading ResourceDictionaries
我目前正在使用线程实现打印。到目前为止(几乎)没有问题。
我被 xaml 解析异常困住了一段时间,尽管我通过将 ResourceDictionaries 添加到我要打印的视图来修复它。该视图显然将尝试在其 InitializeComponent
调用中加载测试项目 app.xaml
中定义的 ResourceDictionaries。
我们使用的主题可以在运行时更改。他们也有一些全局样式。
现在的问题是... 有什么方法可以防止 UserControl
加载 app.xaml
或任何其他定义的 ResourceDictionaries位置在 InitializeComponent
?
基本上应用程序中的所有视图都使用带有样式的当前主题,用于打印的 UserControl
s 应该不使用样式,根本不使用 ResourceDictionary
。
我 "solved" 通过创建一个新主题来解决这个问题,默认情况下它会覆盖所有使用的控件样式。只有在 UserControl
资源中包含此 ResourceDictionary
才会使用 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}"/>
我目前正在使用线程实现打印。到目前为止(几乎)没有问题。
我被 xaml 解析异常困住了一段时间,尽管我通过将 ResourceDictionaries 添加到我要打印的视图来修复它。该视图显然将尝试在其 InitializeComponent
调用中加载测试项目 app.xaml
中定义的 ResourceDictionaries。
我们使用的主题可以在运行时更改。他们也有一些全局样式。
现在的问题是... 有什么方法可以防止 UserControl
加载 app.xaml
或任何其他定义的 ResourceDictionaries位置在 InitializeComponent
?
基本上应用程序中的所有视图都使用带有样式的当前主题,用于打印的 UserControl
s 应该不使用样式,根本不使用 ResourceDictionary
。
我 "solved" 通过创建一个新主题来解决这个问题,默认情况下它会覆盖所有使用的控件样式。只有在 UserControl
资源中包含此 ResourceDictionary
才会使用 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}"/>