2

我可以在 Silverlight 4 中定义如下样式:

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

但是,我也想将这些属性应用于 a Run。我可以有多个值TargetType,或者以某种方式让这些样式沿树传播吗?

4

2 回答 2

4

通常,您可以创建针对公共基类的样式,然后创建从基样式派生的空样式以针对特定类。但是,在 TextBlock 和 Run 的情况下,它们不共享一个公共基类,事实上,由于 Run 不是从 FrameworkElement 派生的,它甚至没有 Style 属性。

但是,如果您询问 Run 是否会继承其父 TextBlock 的前景/字体属性,那么它会。但是您不能独立于包含 TextBlock 的 Run 应用此样式。

另一种选择是为前景画笔和字体粗细创建静态资源,如下所示:

<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>
于 2010-12-09T02:55:24.853 回答
0

不.. 一种样式 - 一种 TargetType...

于 2010-12-09T05:52:22.190 回答