【问题标题】:Silverlight 4 and Implicit stylingSilverlight 4 和隐式样式
【发布时间】:2010-03-02 14:29:59
【问题描述】:

在 Silverlight 4 中,可以使用隐式样式 - 这太棒了!但是,如果我想为我的所有按钮、复选框和单选按钮(都继承自 ButtonBase)应用一种样式怎么办?我无法将 Style 上的 TargetType 设置为 ButtonBase - 这不起作用。我需要为这 3 种控件类型中的每一种都创建一个样式吗?

【问题讨论】:

    标签: silverlight silverlight-4.0


    【解决方案1】:

    【讨论】:

    • 好的,所以这是不可能的让目标元素成为 TargetType 的子类。但是类型化样式通常应用于类型完全匹配的元素!这样做是为了防止意外。例如,您可能已经为应用程序中的所有 ToggleButtons 创建了样式,并且您不希望将此样式应用于任何 CheckBox(派生自 ToggleButton)。”
    • 是的,这样可以防止不必要的继承意外。
    【解决方案2】:

    xamlgeek,

    以下隐式样式对我很有效。我首先创建一些名称/键控样式,尽可能使用常见的 BasedOn 样式。然后我简单地创建基于那些命名/键控样式的隐式样式...

    <Style x:Key="BaseStyle" TargetType="Control">
        <Setter Property="FontFamily" Value="{StaticResource FontFamily}" />
        <Setter Property="FontSize" Value="{StaticResource FontSize}" />
        <Setter Property="Foreground" Value="{StaticResource FontBrush}" />
    </Style>
    <Style x:Key="BaseStyleCentered" TargetType="Control" BasedOn="{StaticResource BaseStyle}">
        <Setter Property="VerticalAlignment" Value="Center" />
    </Style>
    <Style x:Key="CommonCheckBox" TargetType="CheckBox" BasedOn="{StaticResource BaseStyleCentered}">
        <Setter Property="Cursor" Value="Hand" />
    </Style>
    <Style x:Key="CommonRadioButton" TargetType="RadioButton" BasedOn="{StaticResource BaseStyleCentered}">
        <Setter Property="Cursor" Value="Hand" />
    </Style>
    <Style x:Key="CommonButton" TargetType="Button" BasedOn="{StaticResource BaseStyleCentered}">
        <Setter Property="Cursor" Value="Hand" />
        <Setter Property="Padding" Value="10,0,10,0" />
        <Setter Property="MinWidth" Value="{StaticResource ButtonWidth}" />
        <Setter Property="MinHeight" Value="{StaticResource ButtonHeight}" />
    </Style>
    <Style TargetType="CheckBox" BasedOn="{StaticResource CommonCheckBox}">
    </Style>
    <Style TargetType="RadioButton" BasedOn="{StaticResource CommonRadioButton}">
    </Style>
    <Style TargetType="Button" BasedOn="{StaticResource CommonButton}">
    </Style>
    

    祝你好运,

    吉姆

    YinYangMe、YinYangMoney 和 FaceToFaceSoftware

    【讨论】:

    • 您的样式不是隐式样式。这些是命名样式。隐式样式没有键,只有一个 TargetType
    • @Jehof:对不起,我在上面的代码 sn-p 中修正了我的解释
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 2011-04-18
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多