代码之家  ›  专栏  ›  技术社区  ›  Mark Ingram

Silverlight:如何在generic.xaml中为子类设置默认样式?

  •  0
  • Mark Ingram  · 技术社区  · 16 年前

    我有以下层次:

    public class A
    {
      protected class B
      {
      }
    }
    

    我尝试用以下方法定义默认样式(在generic.xaml中):

    <Style TargetType="local:A+B">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="local:A+B">
                    <Grid/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    
    <Style TargetType="local:A.B">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="local:A.B">
                    <Grid/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    
    <Style TargetType="local:B">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="local:B">
                    <Grid/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    

    有人知道正确的语法吗?

    1 回复  |  直到 16 年前
        1
  •  1
  •   Craig Nicholson    16 年前

    我不相信继承的样式是支持的,因为它是在CSS中。只能为特定目标类型创建样式。然后,您需要指定样式。

    但是,您使用的是generic.xaml文件(现在位于themes/generic.xaml下),该文件为特定的目标类型应用默认样式。因此,如果需要以包含的类B为目标,则需要定义B的样式或将其包含在通过公共属性的A下。