Silverlight: как установить стиль по умолчанию в generic.xaml для дочернего класса?

У меня есть следующая иерархия:

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>

Кто-нибудь знает правильный синтаксис?


person Mark Ingram    schedule 16.10.2008    source источник


Ответы (1)


Я не верю, что унаследованные стили поддерживаются, как в CSS. Вы можете создать стиль только для определенного типа цели. Затем на экземпляре нужно выдвинуть стиль.

Однако вы используете файл generic.xaml (теперь в разделе themes/generic.xaml), который применяет стиль по умолчанию для определенного целевого типа. Поэтому, если вам нужно настроить таргетинг на содержащийся класс B, вам нужно будет либо определить стиль B, либо включить его в A через общедоступные свойства.

person Craig Nicholson    schedule 19.10.2008
comment
Правильный. В общем, вам не следует рассматривать идею шаблонов в иерархии: у вас должен быть уникальный шаблон для DefaultStyleKey каждого элемента управления и т. д. - person Jeff Wilcox; 30.08.2009