在后面的代码中设置隐式样式

时间:2011-12-15 18:01:45

标签: silverlight resources styles

我们有一个应用程序,我们将默认控件样式定义为隐式样式。

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访问,但这似乎也不起作用。

有没有人知道解决这个问题?

2 个答案:

答案 0 :(得分:5)

像往常一样,一旦我发布了这个问题,我就想出了一个解决方案:

在Object上使用ClearValue方法清除样式属性,使其保留默认样式。

cmdButton.ClearValue(FrameworkElement.StyleProperty)

答案 1 :(得分:0)

如何添加Key默认Style而不是cmdButton.Style = Nothing;执行cmdButton.Style = App.Current.Resources("DefaultButtonStyle");

如果您不喜欢此解决方案,可以阅读几篇关于VisualStateManager的文章。但是为了实现它,你应该重写一下你的逻辑。