2011-06-14 55 views
0

我有一個場景,我在運行時解析資源字典的XAML。如下所示:在多個控件中使用相同的ResourceDictionary對象

var parsedResourceDictionary = XamlReader.Parse(xaml) as ResourceDictionary; 

這一切都發生在自定義資源字典(從ResourceDictionary作爲基類派生)中。解析後,我打電話

MergedDictionaries.Add(parsedResourceDictionary); 

由於解析XAML需要相當長的一段時間,我想緩存解析器輸出,只是呼籲MergedDictionary場add方法。 現在,我的問題是,如果可以保留對此parsedResourceDictionary的引用並稍後添加它。

謝謝

回答

0

我只是做我來自哪裏嵌入式XAML創建ResourceDictionary中一個小的測試應用程序:

public partial class MainWindow : Window 
{ 
    public static ResourceDictionary CachedResourceDictionary; 

    public MainWindow() 
    { 
     if (CachedResourceDictionary == null) 
     { 
      CachedResourceDictionary = new ResourceDictionary 
      { 
       Source = 
        new Uri("/ResourceDictionaryCache;component/Dictionary1.xaml", 
          UriKind.RelativeOrAbsolute) 
      }; 
     } 
     Resources.MergedDictionaries.Add(CachedResourceDictionary); 

     InitializeComponent(); 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     var toOpen = new MainWindow(); 
     toOpen.Show(); 
    } 
} 

在Button_Click事件中,我剛剛創建的主窗口的新實例,然後

0

是的。閱讀一次,將它放在某個變量中,並在將來使用它,而不是再次讀取它。你試過了嗎?

相關問題