如何为整个Silverlight应用程序应用样式?

3

我在我的页面中创建了两种不同的网格背景和单选按钮样式。

App.xaml.

用户可以选择任何样式来改变页面的外观,例如:更改单选按钮的背景和样式。
现在,当我点击单选按钮时,应用程序会导航到另一个页面,并且样式会消失。
是否有一种方法可以在应用程序级别设置样式,或者我需要将styleVar存储为全局变量,在第二个页面加载时进行检查,然后根据styleVar应用样式。
3个回答

3

就像Jeff Wilcox所说的那样,隐式样式是Silverlight 4中的一项新功能。因此,如果您想创建一个在XAML文件范围内或整个应用程序中作为该类型所有控件的默认样式的样式,您可以省略x:Key属性。

<Style x:Key="ButtonStyle" TargetType="Button">

要使用ButtonStyle,您需要编写以下内容:
<Button Content="A button" Style="{StaticResource ButtonStyle}" />

略去x:Key则可将ButtonStyle作为默认样式使用。
<Style TargetType="Button">

<Button Content="A button with style that has no x:Key value" />

如果您需要创建一个没有默认样式的按钮,您可以将该按钮的Style属性设置为x:Null或通过为该按钮设置命名样式来覆盖。

 <Button Content="Default Silverlight button" Style="{x:Null}"/>

在Silverlight 4中,样式的另一个新特性是可以基于现有样式创建新样式。虽然这不是你的问题,我会举一个例子:
<Style TargetType="Button" BasedOn="{StaticResource BasedStyle}">

关于文档中的隐式样式:http://msdn.microsoft.com/en-us/library/system.windows.style%28VS.95%29.aspx 隐式样式 在Silverlight 4中,您可以隐式设置样式。也就是说,您可以将某种样式应用于特定类型的所有元素。当声明资源时没有指定x:Key值时,x:Key值会假定为TargetType属性的值。如果您隐式设置样式,则该样式仅适用于与TargetType完全匹配的类型,而不适用于从TargetType值派生的元素。例如,如果您隐式创建一个样式,用于应用于应用程序中的所有ToggleButton控件,并且您的应用程序具有ToggleButton和CheckBox控件(CheckBox派生自ToggleButton),则该样式仅应用于ToggleButton控件。 基于样式 从Silverlight 3开始,可以基于现有样式构建新样式。您可以使用BasedOn属性来实现此操作。这减少了代码重复并使资源管理更加容易。每个样式仅支持一个BasedOn样式。有关详细信息,请参见BasedOn属性。

2
只需在App.xaml中省略Style的x:Key部分即可。这是Silverlight 4的一个新功能。

0
将相关的样式放置在App.xaml文件中。应用程序对象的资源属性使得样式和其他资源在整个应用程序中都可用。

是的,我可以通过以下方式设置样式: radioBtn.Style = (Style)(Application.Current.Resources["rdbFolder"]);但我必须在所有页面中重复此过程以设置样式。相反,我希望当我在第一页中设置radioBtn的样式时,它应该适用于应用程序中所有页面上的所有radiobuttons。 - Simsons

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接