Я бы порекомендовал Обзор ресурсов .
Когда вы используете расширение разметки StaticResource в XAML, оно будет перемещаться по логическому дереву в поисках ресурса "somename".Вы можете сделать то же самое в коде, используя метод FrameworkElement.FindResource (или TryFindResource):
myButton.Background = (Brush)this.FindResource("RainbowBrush");
Когда вы используете someFrameworkElement.Resources ["somename"], вы непосредственно получаете доступ к словарю ресурсов этого элемента Framework,который ничем не отличается от доступа к обычному словарю или объекту хеш-таблицы - у него нет умов, чтобы пройти по логическому дереву.