Silverlight 4 - Получить кисть сплошного цвета из словаря ресурсов во время выполнения? - PullRequest
0 голосов
/ 27 октября 2011

Я пытаюсь получить сплошную цветную кисть, предварительно определенную в словаре ресурсов (Styles.xaml) из C #.

Проблема в том, что при запуске следующего кода ничего не происходит:

private void LinkContinue_MouseEnter(object sender, MouseEventArgs e)
{
    this.LinkContinue.Background = (SolidColorBrush)Resources["HoverColorBrush"];
}

Однако, если я устанавливаю фон в коде явно, он работает нормально:

private void LinkContinue_MouseLeave(object sender, MouseEventArgs e)
{
    this.LinkContinue.Background = new SolidColorBrush(Colors.Gray);
}

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 27 октября 2011

Синтаксис Resources["HoverColorBrush"] ищет ресурс, хранящийся в ресурсах текущего объекта .В этом случае ресурсы экземпляра класса, который содержит метод LinkContinue_MouseEnter.

Если вы хотите использовать тот же механизм поиска, который будет использовать {StaticResource HoverColorBrush}, вам нужно использовать FindResourceвместо этого метод:

Но, если повезет, Silverlight не поддерживает FindResource, поэтому вам нужнолибо найдите ресурс непосредственно в ResourceDictionary, определенном в Styles.xaml, либо сверните свой собственный FindResource.

Вот статья блога на эту тему с примером кода:

3 голосов
/ 27 октября 2011

Итак, ответ был Application.Current.Resources["ResourceName"] as SolidColorBrush! Кто мог знать, что объект Resources указывает на словарь ресурсов для страницы? UGHHH

...