在dll之间共享资源

时间:2013-10-03 12:19:45

标签: c# wpf

我已经阅读了一些关于资源字典的帖子,但在我的情况下都没有。 我的解决方案仅由dll构成,这些dll是从Delphi(VCL)应用程序中使用的。 这些dll,有窗口(WPF)形式,等等..

我在哪里可以放一些资源字典,这样所有的dll都可以重用呢?

2 个答案:

答案 0 :(得分:0)

确切地说“资源”是什么意思,但您可以通过将文件包含在项目中来将文件添加到.dll中(只需创建一个新文件夹“resources”,然后右键单击并add existing item到它)。

右键单击并在刚刚添加的文件上选择properties。在Build Action下,选择Embedded Resource。现在编译项目时,该文件将包含在.dll中。

我相信你可以找到很多关于访问嵌入式资源的信息;见this SO post, for instance, about reading from an embedded text file.

答案 1 :(得分:0)

我按照以下步骤开始工作:

  1. 我创建了一个新的dll项目,并在其中添加了新的项目“Resource Dictionay(WPF)”。 在这个文件中,我声明了我的自定义资源,如下所示:

    <Style TargetType="Button">
        <Style.Triggers>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Opacity" Value="0.30"></Setter>
            </Trigger>
            <Trigger Property="IsEnabled" Value="True">
                <Setter Property="Opacity" Value="1"></Setter>
            </Trigger>
        </Style.Triggers>
        <Setter Property="Background" Value="Transparent"></Setter>
        <Setter Property="BorderBrush" Value="Transparent"></Setter>
    </Style>
    

  2. 在我的其他项目中,我在XAML中以这种方式引用此资源:

    <Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/my.project.here;component/Assets/CommonDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
    

  3. 就是这样。