2012-12-17 103 views
3

我想從依賴屬性更改TextBlock的前景色。
但我不改變文本塊的顏色。
我不知道我的代碼中存在這個問題。
如何使用觸發器更改TextBlock的前景色?
如何使用觸發器更改TextBlock的前景色?

XAML:

<TextBlock Name="TestBlock" Text="Test color" > 
    <TextBlock.Style> 
     <Style TargetType="TextBlock"> 
      <Style.Triggers> 
       <Trigger Property ="IsMouseOver" Value="True"> 
        <Setter Property= "Foreground" Value="Gray"/> 
       </Trigger> 
       <DataTrigger Binding="{Binding Path=TestColorMode2, RelativeSource={RelativeSource AncestorType={x:Type local:Window1}}}" Value="0"> 
        <Setter Property="Foreground" Value="Red" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Path=TestColorMode2, RelativeSource={RelativeSource AncestorType={x:Type local:Window1}}}" Value="1"> 
        <Setter Property="Foreground" Value="Blue" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Path=TestColorMode2, RelativeSource={RelativeSource AncestorType={x:Type local:Window1}}}" Value="2"> 
        <Setter Property="Foreground" Value="Green" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Path=TestColorMode2, RelativeSource={RelativeSource AncestorType={x:Type local:Window1}}}" Value="3"> 
        <Setter Property="Foreground" Value="Black" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 

CODE:

public static DependencyProperty TestColorModeProperty = DependencyProperty.Register("TestColorMode", typeof(int), typeof(UpdateProgressItem)); 

public int TestColorMode 
{ 
    get { return (int)GetValue(TestColorModeProperty); } 
    set { SetValue(TestColorModeProperty, value); } 
} 

      .... 

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    TestColorMode++; 
} 

回答

3

這樣,才能幫助您:

<Style x:Key="SimpleLabel" TargetType="{x:Type Label}"> 
    <Setter Property="HorizontalContentAlignment" Value="Left"/> 
    <Setter Property="VerticalContentAlignment" Value="Top"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Label}"> 
       <Grid> 
        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="True"/> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsEnabled" Value="False"> 
         <Setter Property="Background" Value="{DynamicResource DisabledBackgroundBrush}" TargetName="Border"/> 
         <Setter Property="BorderBrush" Value="{DynamicResource DisabledBackgroundBrush}" TargetName="Border"/> 
         <Setter Property="Foreground" Value="{DynamicResource DisabledForegroundBrush}"/> 
        </Trigger> 
        <Trigger Property="TextBlock.IsMouseOver" Value="true"> 
         <Setter Property="TextBlock.Foreground" Value="Gray" /> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
5

指定過的類型:

<Trigger Property="TextBlock.IsMouseOver" Value="true"> 
    <Setter Property="TextBlock.Foreground" Value="Gray" /> 
</Trigger> 
相關問題