2

我想在一个独立的 dll 中包含一组样式,可以从许多不同的 WOF 类中引用这些样式来定义常见的样式。

我已经创建了独立的 dll 并尝试引用它,但遇到了问题。

这是独立dll的代码:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

        <Style x:Key="myStyle" TargetType="Button">
            <Setter Property="Background" Value="Orange" />
            <Setter Property="FontStyle" Value="Italic" />
            <Setter Property="Padding" Value="8,4" />
            <Setter Property="Margin" Value="4" />
        </Style>

    <!-- store here your styles -->
</ResourceDictionary> 

这是我试图引用它的地方:

<src:GX3ClientPlugin.Resources>
    <ResourceDictionary Source="pack://application:,,,/GX3StyleResources.dll;component/GX3StyleResources.xaml" />
</src:GX3ClientPlugin.Resources>

运行时出现以下异常:

无法加载文件或程序集“GX3StyleResources.dll,Culture=neutral”或其依赖项之一。该系统找不到指定的文件。

有任何想法吗?

4

2 回答 2

5

我在我的一些项目中做同样的事情,我所做的是将 dll 作为引用添加到我的项目中,然后我使用 pack Uri 但我没有指定扩展名 .dll。我只使用程序集名称(通常没有 .dll)

Source="pack://application:,,,/GX3StyleResources;component/GX3StyleResources.xaml"
于 2012-10-19T11:34:07.637 回答
0

我之前也遇到过这个问题。如果您从未在实际的 C# 代码中实际引用该程序集中的任何内容,有时(我一生无法确定的标准)编译器/运行时/两者的某种组合不会加载或复制您的程序集。

将一个类添加到您的资源程序集文件中,该类执行 SOMETHING / 任何事情 - 不要将其留空,否则在某些情况下它会被优化掉:

public static class Resources
{
    public static void Init()
    {
        Console.Write(string.Empty);
    }
}

然后,在您的应用程序中,先在您的 App 启动方法中调用 Resources.Init(),然后再进行其他任何操作,以确保加载资源程序集。

这是一个肮脏肮脏的黑客,但它有效。

于 2012-10-19T11:25:47.533 回答