我在
中创建了两种不同的网格背景和单选按钮样式App.xaml.
用户可以选择任何样式来改变页面的外观,即:改变单选按钮的背景和样式。
现在当我点击raduio按钮时,应用程序导航到另一个页面,样式消失。
有没有办法在应用程序级别设置样式,或者我需要将styleVar
存储为Global Var并检查第二页加载,然后根据styleVar
应用样式。< / p>
答案 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属性使整个应用程序中的样式和其他资源可用。