0

我有一个包含很多程序集(> 100)的项目。其中许多程序集都有像“图像”这样的子文件夹。例如,许多 wpf-windows/user-controls 都有一个“\images\close.png”。这意味着我有许多“close.png”图片,而不仅仅是一张。

现在我想为所有图像/资源创建一个中心位置。我做了什么:

  • 创建了一个名为“abcdeCore.Resources”的新类库/程序集
  • 添加了一个名为“ImageDictionary.xaml”的资源字典
  • 创建了一个子文件夹“图像”
  • 将我的图像复制到此子文件夹。例如“abcdeCore.Resources\images\close.png”
  • 将图像的内置属性设置为“资源”
  • 像这样在“ImageDictionary.xaml”中声明图像“<ImageSource x:Key="Image_close">close.png</ImageSource>”
  • 在我想像这样使用“close.png”图像的wpf窗口中使用字典

    <Window.Resources> <ResourceDictionary Source="pack://application:,,,/abcdeCore.Resources;component/Images/ImageDictionary.xaml"/></Window.Resources>

  • 尝试像这样使用在中央资源字典“ImageDictionary.xaml”中声明的图像 <Button><Image Source="{StaticResource Image_close}"></Image></Button>

在 VS 的设计器模式下,图像正在显示,但是当我启动项目并打开我的 wpf 窗口时,我收到一个错误,例如

"{"找不到文件或程序集 \"abcdeCore.Resources, Culture=neutral\" 或其依赖项之一。系统找不到给定的文件。":"abcdceResources, Culture=neutral"} (我将错误消息从德语翻译成英语:))

有谁知道我做错了什么以及为什么我不能让中央资源字典正常工作?感谢您的任何想法!!!

来自德国的问候

编辑:我的 wpf 窗口所在的程序集中也有对“abcdeCore.Resources”的引用

编辑 2: System.Windows.Markup.XamlParseException: Message=RowNumber "7" and RowPosition "10" of "Setting the Property "System.Windows.ResourceDictionary.Source" 导致异常"。

4

1 回答 1

0

好的,我的第一个想法是,由于WinApi. 我不确定,因为我对资源加载机制的内部一无所知。

请尝试从较短的路径启动程序。也许,它会解决问题。

编辑

只是一个想法,您是否被ImageDictionary.xaml声明为资源?如果没有,您应该将其构建步骤设置为“资源”。

编辑2

下一个想法。请ImageDictionary.xaml通过注释掉元素来清空。逐个元素地取消注释字典。也许,您会通过这种方式找到问题的原因。

于 2013-02-01T13:00:19.230 回答