样式动态添加StackPanel子元素

时间:2010-07-01 11:28:51

标签: silverlight xaml silverlight-4.0 styles

我有一个StackPanel,我动态更改每5分钟的内容以显示用户消息。这些消息显示为TextBlock或HyperLinkBut​​ton。我想知道如何/如果我可以在StackPanels样式中设置适用于孩子的样式。

E.g。我试过了

<Style x:Key="InfoBarStyle" TargetType="StackPanel">
  <Setter Property="TextElement.Foreground" Value="WhiteSmoke"/>
  <Setter Property="TextElement.FontWeight" Value="Bold"/>
</Style>

这是可能的还是我需要在添加每个UiElement之前在代码中设置样式?

1 个答案:

答案 0 :(得分:2)

您可以在WPF中尽可能利用Silverlight 4.0中的Implicit Styling。诀窍是在定义样式时省略x:Key属性,它将自动应用于定义样式的ResourceDictionary范围内的TargetType的所有元素。

以下是一个例子:

 <StackPanel>
  <StackPanel.Resources>
    <Style TargetType="TextBlock">
      <Setter Property="TextElement.Foreground" Value="WhiteSmoke"/>
      <Setter Property="TextElement.FontWeight" Value="Bold"/>
    </Style>
  </StackPanel.Resources>
  <TextBlock Text="My Message"/>
</StackPanel>

StackPanel中的所有TextBlock元素现在都会应用该样式,但是它们会添加到它中。