1

我创建了一个“主题引擎”,其中包含资源字典和自定义组合框来更改应用程序的外观。这包含在 .dll 文件中,目的是能够从任何新应用程序中引用此 .dll 并准备好皮肤逻辑。我已经相对轻松地解决了这个项目的大部分问题,但我留下了一个大问题......在调用 .dll 的应用程序中,可以使用背景设置元素的背景等属性= "{DynamicResource XKeyOfBrushIWantToUse}" 但有一个编译时警告指出“资源 "XKeyOfBrushIWantToUse" 无法解析。这是有道理的,因为 .dll 尚未加载。一旦我运行应用程序,它现在能够找到该资源并适当地使用它。我想要的是一种在编译时/设计时知道画笔 x:key 属性是什么的方法,这样当我将属性设置为一个值时,我就可以知道哪些选项可用。

例如,在我的 .dll 中有一个画笔 x:key="MainWindowBackgroundBrush"。此画笔的颜色属性会根据加载的包含颜色的资源字典而更改。(即 BlueColors.xaml 的颜色是 BackgroundColor,RedColors.xaml 也是如此。在运行时我可以交换颜色文件,尽管颜色的十六进制值现在不同,但画笔仍将指向“BackgroundColor”)现在当我去一个新的应用程序并引用.dll并设置一个按钮的背景颜色,我必须知道画笔的键是什么,因为我还没有找到从.dll中公开可用键的方法。

非常感谢您的帮助!!!!

4

1 回答 1

2

DevExpress提出了一个有趣的方法来解决这个问题,他们基本上Enums为每个特定的元素和样式设置了一组,并且MarkupExtension从这个枚举中接收一个值并返回适当的字符串键。这样,您可以执行以下操作:

<Style BasedOn="{StaticResource {dxgt:GridRowThemeKey ResourceKey=CellStyle}}"> 
  <!-- and so on... -->
于 2013-03-21T21:49:28.207 回答