Silverlight 在代码隐藏中设置隐式样式

Silverlight 在代码隐藏中设置隐式样式,silverlight,resources,styles,Silverlight,Resources,Styles,我们有一个应用程序,其中默认控件样式定义为隐式样式 XAML: 然后,我们再次希望删除样式并返回隐式样式,但这似乎是不可能的: 代码: 结果显示未设置样式的按钮 我在这里还读到,所有隐式样式都应该由TargetType值作为键来访问,但这似乎也不起作用 有人知道解决这个问题的方法吗?如何-为默认样式添加键,而不是cmdButton.Style=NothingdocmdButton.Style=App.Current.Resources(“DefaultButtonStyle”) 如果您不喜欢此解

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

XAML:

然后,我们再次希望删除样式并返回隐式样式,但这似乎是不可能的:

代码:

结果显示未设置样式的
按钮

我在这里还读到,所有隐式样式都应该由TargetType值作为键来访问,但这似乎也不起作用


有人知道解决这个问题的方法吗?

如何-为默认
样式添加
,而不是
cmdButton.Style=Nothing
do
cmdButton.Style=App.Current.Resources(“DefaultButtonStyle”)


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

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

在对象上使用ClearValue方法将清除style特性,并将其保留为默认样式

cmdButton.ClearValue(FrameworkElement.StyleProperty)

是的,这当然是可能的,但这意味着样式不再是隐式的,因此不会自动设置为应用程序中的所有按钮。
<Style x:Key="HighlightStyle" TargetType="Button">
    [...]
</Style>
cmdButton.Style = App.Current.Resources("HighlightStyle")
cmdButton.Style = Nothing
cmdButton.ClearValue(FrameworkElement.StyleProperty)