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
Wpf 运行时不从外部程序集解析默认样式_Wpf_Xaml_Styles - Fatal编程技术网

Wpf 运行时不从外部程序集解析默认样式

Wpf 运行时不从外部程序集解析默认样式,wpf,xaml,styles,Wpf,Xaml,Styles,我在解析来自外部程序集的资源时遇到了一些问题 我在一个名为Theme的项目中有一个Styles.xaml文件,我有一个默认按钮样式,声明如下: <Style TargetType="{x:Type Button}" x:Key="{x:Type Button}"> <!--Setters here--> </Style> 然后在一个单独的WPF项目中(但在同一个解决方案中),我在app.xaml文件中有以下内容: <

我在解析来自外部程序集的资源时遇到了一些问题

我在一个名为Theme的项目中有一个Styles.xaml文件,我有一个默认按钮样式,声明如下:

    <Style TargetType="{x:Type Button}" x:Key="{x:Type Button}">
    <!--Setters here-->
    </Style>

然后在一个单独的WPF项目中(但在同一个解决方案中),我在app.xaml文件中有以下内容:

    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary
        Source="/Theme;component/Styles.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

然后在主窗口中,我声明一个默认按钮,没有附加样式,如下所示:

    <Button Width="100" Height="100" />

在“设计”视图中,该按钮似乎从Styles.xaml文件中选取样式,但在构建和运行项目时,该按钮只是默认为标准按钮样式

我已经检查了Theme.dll文件是否已经被复制到WPF构建目录(它已经复制到了),所以我不知道为什么会发生这种情况

有趣的是,如果我这样定义按钮样式

    <Style TargetType="{x:Type Button}" x:Key="MyStyle">
    <Button Style={StaticResource MyStyle} Width="100" Height="100" />

然后直接在另一个项目中的按钮上引用它,如下所示

    <Style TargetType="{x:Type Button}" x:Key="MyStyle">
    <Button Style={StaticResource MyStyle} Width="100" Height="100" />

它在设计视图中选择样式,并在项目构建和执行时正常工作

有什么想法吗?任何帮助都会很好


Kris

在引用XAML文件时,您可能需要使用一个完整的文件,即如果您不引用嵌入式资源,则使用。

这可能是我的理解不足,但如果我使用这样的packuri:pack://siteoforigin:主题;component/Styles.xaml我得到一个异常“检查目录是否存在于指定位置”。主题组装在WPF应用程序的根目录中,所以我不确定为什么这不起作用。谢谢你的回复!