2011-12-30 3 views
1

В XAML {StaticResource somename} провалится из ресурсов управления в ресурсы окон и, наконец, ресурсов приложений. В коде позади для той же формы, Resources["somename"] появляется только для работы с ресурсами окна.Устранение ресурсов в C#

Я обнаружил, что в кодовом окне окна, чтобы разрешить ресурс, определенный на уровне приложения, необходимо явно ссылаться на App.Current.Resources.

Я использую что-то неправильно или это ожидаемое поведение?

ответ

0

Я бы рекомендовал Resources Overview.

Когда вы используете расширение разметки StaticResource в XAML, оно будет перемещаться по логическому дереву, ища ресурс «somename». Вы можете сделать то же самое в коде, используя FrameworkElement.FindResource (TryFindResource или) метод:

 myButton.Background = (Brush)this.FindResource("RainbowBrush"); 

При использовании someFrameworkElement.Resources [ «SomeName»], вы прямой доступ словарь ресурсов, что рамочный элемент, который является ничем не отличающийся от доступа к обычным словарю или хеш-объекту - у него нет никаких smarts для перемещения по логическому дереву.

+0

Как ни странно, я вспоминаю (теперь, когда вы упоминаете об этом), читаете о FrameworkElement.FindResource(), но это было так много времени между чтением и необходимостью, что я чистым забыл. –