如何将样式应用于整个silverlight应用程序?

时间:2010-05-14 05:22:20

标签: silverlight silverlight-3.0

我在

中创建了两种不同的网格背景和单选按钮样式
App.xaml.

用户可以选择任何样式来改变页面的外观,即:改变单选按钮的背景和样式。

现在当我点击raduio按钮时,应用程序导航到另一个页面,样式消失。

有没有办法在应用程序级别设置样式,或者我需要将styleVar存储为Global Var并检查第二页加载,然后根据styleVar应用样式。< / p>

3 个答案:

答案 0 :(得分:3)

是的,就像Jeff Wilcox所说隐式样式是Silverlight 4中的新东西。因此,如果你想创建一个样式,该样式是XAML文件范围内该类型的所有控件的默认样式或整个应用程序如果放在App.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或override。

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

Silverlight 4中Styles的另一个新功能是您可以创建基于现有样式的新样式。虽然这不是你的问题,但我会举一个例子:

<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   样式。有关更多信息,请参阅   基于物业。

答案 1 :(得分:2)

在App.xaml中,不要使用Style的x:Key部分。这是Silverlight 4的新功能。

答案 2 :(得分:0)

将有问题的样式放在App.xaml文件中。应用程序对象Resources属性使整个应用程序中的样式和其他资源可用。