Silverlight: несколько значений для TargetType? - PullRequest
2 голосов
/ 09 декабря 2010

Я могу определить стиль в Silverlight 4 следующим образом:

    <Style x:Name="Subtitle" TargetType="TextBlock">
        <Setter Property="Foreground" Value="#787878" />
        <Setter Property="FontWeight" Value="Light" />
     </Style>

Однако я хочу применить эти свойства и к Run.Могу ли я иметь несколько значений для TargetType, или как-то эти стили распространяются вниз по дереву?

Ответы [ 2 ]

4 голосов
/ 09 декабря 2010

Обычно вы можете создать стиль, нацеленный на общий базовый класс, а затем создать пустые стили, производные от базового стиля, для нацеливания на конкретные классы. Однако в случае TextBlock и Run они не имеют общего базового класса, и фактически, поскольку Run не является производным от FrameworkElement, у него даже нет свойства Style.

Однако, если вы спрашиваете, наследует ли Run свойства foreground / font своего родительского TextBlock, тогда да, это так. Но вы не сможете применить этот стиль к Run независимо от содержащего его TextBlock.

Другой вариант - создать статические ресурсы для кисти переднего плана и веса шрифта следующим образом:

<Grid
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<Grid.Resources>
  <FontWeight x:Key="SubtitleFontWeight">Light</FontWeight>
  <SolidColorBrush x:Key="SubtitleForeground" Color="#787878" />
</Grid.Resources>

  <TextBlock>
    <Run Text="Hello " />
    <Run Text="World!" 
         Foreground="{StaticResource SubtitleForeground}"
         FontWeight="{StaticResource SubtitleFontWeight}" />
  </TextBlock>

</Grid>
0 голосов
/ 09 декабря 2010

Нет .. один стиль - один тип цели ...

...