我们有一个应用程序,我们将默认控件样式定义为隐式样式。
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作为Key访问,但这似乎也不起作用。
有没有人知道解决这个问题?
答案 0 :(得分:5)
像往常一样,一旦我发布了这个问题,我就想出了一个解决方案:
在Object上使用ClearValue方法清除样式属性,使其保留默认样式。
cmdButton.ClearValue(FrameworkElement.StyleProperty)
答案 1 :(得分:0)
如何添加Key
默认Style
而不是cmdButton.Style = Nothing;
执行cmdButton.Style = App.Current.Resources("DefaultButtonStyle");
。
如果您不喜欢此解决方案,可以阅读几篇关于VisualStateManager
的文章。但是为了实现它,你应该重写一下你的逻辑。