2011-06-14 68 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

是的。阅读一次,将它放在某个变量中,并在将来使用它,而不是再次读取它。你试过了吗?

相关问题