【问题标题】:Using same ResourceDictionary object in multiple controls在多个控件中使用相同的 ResourceDictionary 对象
【发布时间】:2011-06-14 12:10:11
【问题描述】:

我有一个场景,我在运行时解析资源字典的 XAML。如下:

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

这一切都发生在自定义资源字典中(从 ResourceDictionary 作为基类派生)。解析后,我调用

MergedDictionaries.Add(parsedResourceDictionary);

由于解析 XAML 需要相当长的时间,我想缓存解析器的输出,然后只在 MergedDictionary 字段上调用 ​​add 方法。 现在,我的问题是是否可以保留对这个 parsedResourceDictionary 的引用并在以后添加它。

谢谢

【问题讨论】:

    标签: wpf resourcedictionary


    【解决方案1】:

    是的。读一次,把它放在某个地方的变量中,以后再使用它,而不是再读一次。你试过了吗?

    【讨论】:

      【解决方案2】:

      我刚刚制作了一个小型测试应用程序,在其中我从嵌入式 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 的一个新实例,然后

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-31
        • 2016-09-27
        • 1970-01-01
        • 2011-10-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多