单独汇编中的资源字典智能感知

时间:2016-01-13 14:28:02

标签: .net wpf vb.net xaml visual-studio-2015

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

在我的类库项目根目录中,我有一个名为ResourceDictionary的{​​{1}} - 这有一些样式,一些画笔和一些字符串等。

使用:

Directory.xaml

我可以成功使用这些资源,但是我打算在未来的项目中使用已编译的类库(dll),问题是,除非我导入项目和引用而不是仅仅引用dll,否则我不会这样做。有任何intellisense支持。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我希望有人能给出更好的答案,但是我决定采用的解决方法是使用Library dll中的类,将键定义为const字符串,使用字典中定义的字符串,然后再使用定义的字符串在应用程序中,我在按键上获得了智能感知。

在库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}}" />

当然,这假设您具有对库dll的控制权!