1

我有一个名为 MyApp 的 WPF 应用程序和一个名为 MyApp.Infrastructure 的单独程序集。在 MyApp.Infrastructure 我有一个 ResourceDictionary

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <BitmapImage x:Key="leftImage" UriSource="/Images/left.png" />
    <BitmapImage x:Key="errorImage" UriSource="/Images/error.png" />
</ResourceDictionary>

图像也在 MyApp.Infrastructure 中。

在 MyApp 中,我在 app.xaml 中有以下内容:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/MyApp.Infrastructure;component/ImageDictionary.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

现在我在 MyApp.Infrastructure 中有一个用户控件,我想在其中加载资源。当我这样做时,它在设计器中有效,但在运行时无效:

<Image Source="{StaticResource leftImage}" />

我还尝试在用户控件中加载 ResourceDictionary,但这并没有成功。

知道我在这里做错了什么吗?

4

2 回答 2

2

您可以尝试如下打包语法:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/MyApp.Infrastructure;component/ImageDictionary.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

不要忘记将文件的构建操作设置为Resource.

于 2013-11-08T07:30:04.600 回答
1

我将我的 ResourceDictiony 更改为:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <BitmapImage x:Key="leftImage" UriSource="/MyApp.Infrastructure;Component/Images/left.png" />
    <BitmapImage x:Key="errorImage" UriSource="/MyApp.Infrastructure;Component/Images/error.png" />
</ResourceDictionary>

似乎是在 MyApp 中搜索的图像,因为我在 app.xaml 中加载了资源字典。

于 2013-11-08T07:45:18.373 回答