在多个控件中使用同一ResourceDictionary对象

问题描述

| 我有一种情况,我在运行时解析资源字典的XAML。如下所示:
var parsedResourceDictionary = XamlReader.Parse(xaml) as ResourceDictionary;
这一切都发生在自定义资源字典(源自ResourceDictionary作为基类)内。解析后,我打电话
MergedDictionaries.Add(parsedResourceDictionary);
由于解析XAML需要相当长的时间,因此我想缓存解析器的输出,并仅在MergedDictionary字段上调用add方法。 现在,我的问题是是否可以保留对此parsedResourceDictionary的引用并在以后添加它。 谢谢     

解决方法

        是。读取一次,将其放在变量中的某个位置,以后再使用该变量,而无需再次读取。你试过了吗?     ,        我只是做了一个小型测试应用程序,在其中我从嵌入式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事件中,我刚刚创建了MainWindow的新实例,然后     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...