在单独的程序集中使用资源字典的智能感知

12

我在vs2015中有一个解决方案,其中包含两个程序集。其中之一是WPF应用程序,另一个是WPF类库。

在我的类库项目根目录中,我有一个名为Directory.xamlResourceDictionary - 它包含一些样式、一些画刷和一些字符串等。

使用:

<ResourceDictionary Source="pack://application:,,,/Resources;component/Directory.xaml"/>
我可以成功使用资源,但是我打算在将来的项目中使用已编译的类库(dll),问题是,除非我导入该项目并引用它,而不仅仅是引用dll,否则我没有任何智能提示支持。 有任何想法吗?

2
你解决了这个问题吗? - Justin Horst
我没有,抱歉。我很久没用WPF了,所以我觉得我可能永远都解决不了它。 - JLangford
1个回答

1
我希望有人能提供更好的答案,但是我决定采用一个变通方法,使用库dll中的类,并将键定义为常量字符串,在字典中使用这些定义的字符串,然后在应用程序中使用这些定义的字符串,以便在键上获得智能感知。
在库dll中创建一个类,该类将定义资源键:
public class KeyDefinitions {
  public const string Key1 = "key1";
  public const string Key2 = "key2";
}

在库的dll中,资源字典中使用这些键(遗憾的是,在库的资源XAML文件中,我没有获得Intellisense来检测KeyDefinitions的成员):
<BitmapImage x:Key="{x:Static local:KeyDefinitions.Key1}" UriSource="../Images/Img1.bmp"/>
<BitmapImage x:Key="{x:Static local:KeyDefinitions.Key2}" UriSource="../Images/Img2.bmp"/>

然后,在应用程序中的xaml中,您可以引用KeyDefinitions类中的键,并获得键的智能感知和编译时检查:
<Image Source="{DynamicResource ResourceKey={x:Static myLibraryNamespace:KeyDefinitions.Key1}}" />
<Image Source="{DynamicResource ResourceKey={x:Static myLibraryNamespace:KeyDefinitions.Key2}}" />

当然,这假设您对Library dll有控制权!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接