在代码中设置隐式样式



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

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所有隐式样式都应该通过targetttype - value作为Key来访问,但这似乎也不起作用。

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

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

在对象上使用ClearValue方法清除style属性,使其保持默认样式。

cmdButton.ClearValue(FrameworkElement.StyleProperty)

如何-将默认的Style添加Key,而不是cmdButton.Style = Nothing;添加cmdButton.Style = App.Current.Resources("DefaultButtonStyle");

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

相关内容

  • 没有找到相关文章

最新更新