我目前正在构建一个应用程序,它由几个组件组成,每个组件本质上都是一个WPF用户控件,周围包含一些C#代码以使插件系统工作(使用MEF)。
我的问题是,每个组件都应该包含一个图标,并且为了美观起见,我将其定义为System.Windows.Media.Brush,因此我可以在那里使用从Design导出的DrawingBrush。现在我需要从非WPF C#中访问那段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文件悬而未决地留在外面。