Разрешение ресурсов в C # - PullRequest
1 голос
/ 30 декабря 2011

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

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

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

1 Ответ

0 голосов
/ 30 декабря 2011

Я бы порекомендовал Обзор ресурсов .

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

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

Когда вы используете someFrameworkElement.Resources ["somename"], вы непосредственно получаете доступ к словарю ресурсов этого элемента Framework,который ничем не отличается от доступа к обычному словарю или объекту хеш-таблицы - у него нет умов, чтобы пройти по логическому дереву.

...