私は現在、いくつかのコンポーネントで構成されるアプリケーションを構築しています。各コンポーネントは基本的に、プラグイン システムが (MEF を使用して) 動作するように小さな C# コードを含む WPF ユーザー コントロールです。
私が抱えている問題は、各コンポーネントにアイコンを含める必要があり、見栄えを良くするためにそれを として定義したので、そこでデザインからエクスポートしSystem.Windows.Media.Brush
たものを使用できることです。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ファイルを持ちたくありません。