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

问题描述:

我已经创建了两个不同的网格背景和单选按钮样式在我如何将样式应用于整个Silverlight应用程序?

App.xaml. 

用户可以选择任何风格的改变页面即的外观:更改单选按钮的背景和风格。

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

有没有办法在应用程序级别设置样式,或者我需要将styleVar存储为全局变量并检查第二页加载,然后根据styleVar应用样式。

是像杰夫Wilcox表示隐造型是在Silverlight 4。所以,如果你想创建一个风格,是该类型的所有控件的默认一个新事物范围XAML文件或整个应用程序(如果放置在App.xaml中),则会省略x:Key属性。

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

要使用的ButtonStyle你会写:

<Button Content="A button" Style="{StaticResource ButtonStyle}" /> 

离开了X:重点将允许您使用的ButtonStyle为默认值。通过命名样式设置到该按钮空或覆盖:

<Style TargetType="Button"> 

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

现在,如果你需要创建一个按钮,没有这个默认的样式,你可以设置按钮的样式属性为x 。

<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属性。如果隐式设置 样式,则样式为 仅适用于与TargetTypeType精确匹配的类型 ,而不适用于从TargetType 值导出的元素 值。例如,如果您隐式创建一个 样式所有 切换按钮在 应用控制,和你的应用程序 切换按钮和CheckBox控件 (复选框从切换按钮派生), 风格只适用于 切换按钮控件。

支持算法FMP样式

使用Silverlight 3开始,它是 可能建立基于 现有样式新的样式。您可以使用BasedOn属性执行此操作 。这 减少代码的重复和 使管理资源更容易。 每种款式只支持一种BasedOn 款式。有关更多信息,请参阅 BasedOn属性。

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

+0

是的,我可以通过设置样式: radioBtn.Style =(Style)(Application.Current.Resources [“rdbFolder”]); 但我必须重复所有页面中的过程来设置样式。 而是我希望当我说在第一页上设置radioBtn的风格时,它应该应用于所有页面中的所有单选按钮。 – Simsons 2010-05-14 07:23:37

只需在App.xaml中放弃x:Style的关键部分。这是为Silverlight 4的一个新功能