Установить неявный стиль в коде позади - PullRequest
4 голосов
/ 15 декабря 2011

У нас есть приложение, в котором у нас есть стили управления по умолчанию, определенные как неявный стиль.

XAML:

<Style TargetType="Button">
    [...]
</Style>

Эти стили теперь применяются к каждой кнопке в приложении.

Иногда мы изменяем стиль в коде на что-то другое.

XAML:

<Style x:Key="HighlightStyle" TargetType="Button">
    [...]
</Style>

Код:

cmdButton.Style = App.Current.Resources("HighlightStyle")

Затем мы сновахотите удалить стиль и вернуться к неявному стилю, но это, по-видимому, невозможно:

Код:

cmdButton.Style = Nothing

В результате получается стиль без Button.

Я также читал здесь http://www.silverlightshow.net/items/Implicit-Styles-in-Silverlight-4.aspx, что все неявные стили должны быть доступны для TargetType-Value в качестве ключа, но, похоже, это тоже не работает.

Кто-нибудь знаетобойти это?

Ответы [ 2 ]

5 голосов
/ 16 декабря 2011

Как обычно, как только я опубликую вопрос, я придумаю решение:

Использование метода ClearValue для объекта очищает свойство стиля, оставляя его в стиле по умолчанию.

cmdButton.ClearValue(FrameworkElement.StyleProperty)
0 голосов
/ 16 декабря 2011

Как насчет - добавить Key по умолчанию Style и вместо cmdButton.Style = Nothing; do cmdButton.Style = App.Current.Resources("DefaultButtonStyle");.

Если вам не нравится это решение, вы можете прочитать пару статей о VisualStateManager. Но для его реализации нужно немного переписать свою логику.

...