Silverlight generic.xaml

时间:2009-03-24 10:19:30

标签: silverlight coding-style

我可以在Silverlight中使用generic.xaml来设置应用程序中所有TextBlock的样式吗?

<ResourceDictionary xmlns="http://schemas.microsoft.com/client/2007"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style TargetType="TextBlock">
        <Setter Property="Foreground"
                Value="White" />
        <Setter Property="FontSize"
                Value="24" />
    </Style>   
</ResourceDictionary>

我希望这可行,但不会: - (

在整个应用程序中应用样式的最简单方法是什么?

谢谢, 标记

修改

感谢您的回复。我没有收到错误,样式没有被应用。我在互联网上找到的所有例子(包括你列出的例子)都是为自定义控件设计的。我可以这样做,但我想设置默认控件的样式:

<TextBlock Text="Style me!!" Grid.Row="2"  />

我是否需要从page.xaml添加对generic.xaml的引用? 我是否需要将generic.xaml样式命名并引用为资源??

再次感谢,马克

6 个答案:

答案 0 :(得分:9)

在Silverlight 4中,您可以使用implicit styling

答案 1 :(得分:5)

通过设置TargetType并省略ResourceKey一般/自动设置样式仅适用于WPF,而不适用于Silverlight。

如果您想在整个应用程序中使用Style,可以将它添加到App.xaml中的Resources集合中,但要使用它,它将需要ax:Key,您必须单独应用它作为StaticResource绑定对于要使用它的目标类型的每个实例。

答案 2 :(得分:1)

我相信这是在Silverlight 3中。但是其他人都是对的,你需要在Silverlight 2中手动设置每一个。

答案 3 :(得分:1)

请注意,您还可以使用Silverlight Toolkit中的ImplicitStyleManager执行此操作:

http://www.codeplex.com/Silverlight/Wiki/View.aspx?title=Silverlight%20Toolkit%20Overview%20Part%203&referringTitle=Home

将样式应用于层次结构中的顶级控件,它将向下传播到所有子控件。

答案 4 :(得分:0)

究竟什么不起作用?你得到一个错误,或者你的文本框没有得到主题吗?

您的方法是主题控件的正确方法,因此只需解决您遇到的问题。

This是一个很好的教程,this也是如此,但请注意,在Silverlight 2中,您需要将通用文件放在

themes\generic.xaml

与您可能找到的许多教程(包括上面给出的教程)不同

修改:另一个教程here

答案 5 :(得分:0)

尝试一下。

<UserControl.Resources>
    <Style TargetType="TextBlock" x:Name="tbStyle">        
        <Setter Property="Foreground" Value="White" />        
        <Setter Property="FontSize"  Value="24" />    
    </Style> 
</UserControl.Resources>

然后使用TextBlock。

<TextBlock Style="{StaticResource tbStyle}" />