我目前正在構建一個由幾個組件組成的應用程序,每個組件都基本上是一個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