Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 防止UserControl加载资源字典_C#_Wpf_Xaml_Mvvm_Resourcedictionary - Fatal编程技术网

C# 防止UserControl加载资源字典

C# 防止UserControl加载资源字典,c#,wpf,xaml,mvvm,resourcedictionary,C#,Wpf,Xaml,Mvvm,Resourcedictionary,我目前正在使用线程实现打印。到目前为止(几乎)没有问题。 虽然我通过向要打印的视图中添加ResourceDictionaries来修复xaml解析异常,但我还是遇到了一些问题。视图显然要尝试加载测试项目的app.xaml调用中的InitializeComponent中定义的ResourceDictionary 我们使用的主题可以在运行时更改。它们也有一些全球风格 现在来谈谈这个问题。。。有什么方法可以防止UserControl加载app.xaml中定义的ResourceDictionary,或者

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

现在来谈谈这个问题。。。有什么方法可以防止
UserControl
加载
app.xaml
中定义的ResourceDictionary,或者从
InitializeComponent
中的任何其他位置加载

基本上,应用程序中的所有视图都使用带有样式的当前主题,用于打印的
UserControl
s不应使用任何样式,也不应使用
ResourceDictionary

I通过创建一个新主题来“解决”问题,该主题默认覆盖所有使用的控件样式。只有将此
ResourceDictionary
包含在
UserControl
资源中,才会使用WPF默认样式

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

字典的工作方式是,它们沿着可视树级联,因此如果控件有一个具有正确键的字典,则返回该值,如果没有,则它会询问父级,然后询问父级,依此类推,直到它命中应用程序,因此您无法阻止它从应用程序加载,但您可以在本地覆盖应用程序的资源
<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}"/>