2011-12-15 2 views
4

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

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 как ключа, но это тоже не работает.

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

ответ

5

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

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

cmdButton.ClearValue(FrameworkElement.StyleProperty) 
0

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

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

+0

Да, это было бы возможно, но это будет означать, что стиль больше не будет неявным и, следовательно, автоматически не будет установлен для всех кнопок в приложении. – Webfarmer

Смежные вопросы