2010-06-09 26 views
0

我有一个显示窗口名称的标签。我想使用样式和触发器更新窗口的IsActive属性上的标签颜色,以便所有继承此样式的标签都应该显示相同的属性。请任何人都可以告诉我如何?更新窗口活动属性上的标签的前景-WWF

我想是这样的:

<Style TargetType="{x:Type Label}" x:Key="HeaderLabel"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding (Window.IsActive)}" Value="True"> 
      <Setter Property="FontSize" Value="15"/> 
      <Setter Property="FontWeight" Value="Bold"/> 
      <Setter Property="FontFamily" Value="Arial"/> 
      <Setter Property="Foreground" Value="Black"/> 
      <Setter Property="HorizontalAlignment" Value="Left"/> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding (Window.IsActive)}" Value="False"> 
      <Setter Property="FontSize" Value="15"/> 
      <Setter Property="FontWeight" Value="Bold"/> 
      <Setter Property="FontFamily" Value="Arial"/> 
      <Setter Property="Foreground" Value="White"/> 
      <Setter Property="HorizontalAlignment" Value="Left"/> 
     </DataTrigger> 

    </Style.Triggers> 
</Style> 

回答

1

尝试在DataTrigger这种结合:

Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=IsActive}" 
0

通过标签,这表明你的意思是在窗口标题栏上的一个窗口的名字吗?或者是其他东西?

如果是后者,则可以设置标签的默认样式,并仅使用一个触发器来处于非活动状态。还要确保你在标签的datacontext中有一个Window。它应该是这样的(没有检查):

<Style TargetType="{x:Type Label}" x:Key="HeaderLabel"> 
    <Setter Property="FontSize" Value="15"/> 
    <Setter Property="FontWeight" Value="Bold"/> 
    <Setter Property="FontFamily" Value="Arial"/> 
    <Setter Property="Foreground" Value="Black"/> 
    <Setter Property="HorizontalAlignment" Value="Left"/> 

    <Style.Triggers> 
     <DataTrigger Binding="{Binding (Window.IsActive)}" Value="False"> 
      <Setter Property="FontSize" Value="15"/> 
      <Setter Property="FontWeight" Value="Bold"/> 
      <Setter Property="FontFamily" Value="Arial"/> 
      <Setter Property="Foreground" Value="White"/> 
      <Setter Property="HorizontalAlignment" Value="Left"/> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

如果要更改标题栏,我想最简单的方法是完全重写的窗口样式(适用于所有Windows主题)。

+0

哎, 其实默认的窗口标题栏的设置为我的应用程序不活动。标题正在由一个标签显示。我想在窗口处于活动状态或非活动状态时更改标签的颜色。 – Deb 2010-06-09 10:06:38