我目前正在构建一个由几个组件组成的应用程序,每个组件都基本上是一个WPF用户控件,并且周围有一个小小的C#代码供插件系统使用(使用MEF) 。从非WPF代码获取WPF XAML资源
我遇到的问题是,每个组件都应该包含一个图标,出于友好的目的,我将其定义为System.Windows.Media.Brush
,因此我可以使用从Design中导出的DrawingBrush
。现在我需要访问非WPF C#那块XAML的,我现在有实例的用户控制和要求它为资源可怕的解决方法:
private Brush CachedIcon = null;
public override Brush Icon
{
get
{
if (CachedIcon == null)
{
CachedIcon = (Brush)(new BlahControl().TryFindResource("Icon"));
}
return CachedIcon;
}
}
我无法找到一个方法来读取资源(这是一个.xaml文件,并在自定义控件中的ResourceDictionary
中引用)来自“普通”C#类。任何属于WPF的东西都有那么好的TryFindResource
方法,但是如何做到这一点呢?我不想让XAML文件的图标处于未嵌入状态。
似乎工作,但看起来veeeery hackish。依靠自动生成资源的内部名称对我来说似乎不太合适。 – Joey 2009-03-11 23:19:51