Программно добавить в Window.Resources в WPF - PullRequest
4 голосов
/ 17 июля 2010

Есть ли способ добавить ResourceDictionary на уровне окна вместо уровня приложения?

Я вижу много примеров для чего-то вроде этого:

Application.Current.Resources.MergedDictionaries.Add(myResourceDictionary);

Однако ничего подобногоЯ ожидаю, что будет, например:

Window.Resources.MergedDictionaries.Add(myResourceDictionary);

Заранее спасибо,

1 Ответ

7 голосов
/ 17 июля 2010

Вы не можете сделать:

Window.Resources

Однако вы можете сделать:

this.Resources.MergedDictionaries.Add(myResourceDictionary);

Ресурсы является свойством FrameworkElement и совместно используется Application и Window (и большинством других классов пользовательского интерфейса в WPF). Однако это свойство экземпляра, а не статическое свойство, поэтому вам нужно работать с ресурсами определенного экземпляра . Когда вы вводили «Window.Resources», вы пытались добавить его к типу «окна», а не к конкретному окну.

Это работает в вашей строке приложения, поскольку Application.Current возвращает текущий экземпляр приложения, поэтому вы работаете с правильным конкретным экземпляром (а не типом).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...