Использование одного и того же объекта ResourceDictionary в нескольких элементах управления - PullRequest
0 голосов
/ 14 июня 2011

У меня есть сценарий, в котором я анализирую XAML словаря ресурсов во время выполнения. Нравится следующее:

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

Все это происходит внутри пользовательского словаря ресурсов (полученного из ResourceDictionary как базовый класс). После разбора звоню

MergedDictionaries.Add(parsedResourceDictionary);

Поскольку синтаксический анализ XAML занимает довольно много времени, я хочу кэшировать выходные данные анализатора и просто вызвать метод add в поле MergedDictionary. Теперь мой вопрос: возможно ли сохранить ссылку на этот parsedResourceDictionary и добавить его позже.

спасибо

Ответы [ 2 ]

0 голосов
/ 15 июня 2011

Я только что создал небольшое приложение для тестирования, в котором я создал ResourceDictionary из встроенного XAML:

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, который затем

0 голосов
/ 14 июня 2011

Да. Прочитайте это однажды, поместите это в переменную где-нибудь и используйте это в будущем вместо того, чтобы читать это снова. Вы пробовали это?

...