2012-12-13 2 views
1

종속성 개체에 따라 단추 텍스트를 깜박이거나 깜박이게해야하는 응용 프로그램이 있습니다 (아래의 예제 XAML에서는 확인란의 IsChecked를 사용함). 나는 Google 검색에서 보았던 많은 다른 트릭을 시도했지만 아무 소용이 없습니다.WPF 텍스트 블록 깜박임

다음은이 용도로 만든 샘플 XAML 코드이며 누락 된 부분이 있어야합니다. 누군가가이 일을 도울 수 있습니까?

=========================

<Window x:Class="WpfTestBed.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="414" Width="751"> 

    <Window.Resources> 
     <Style x:Key="SB_BaseGradientButton" TargetType="Button"> 
      <Style.Resources> 
       <Color x:Key="StartColor">Gray</Color> 
       <Color x:Key="EndColor">White</Color> 

       <SolidColorBrush x:Key="PressedForegroundColor" Color="Black"/> 
      </Style.Resources> 
      <Setter Property="Margin" Value="2,2,2,2" /> 
      <Setter Property="Foreground" Value="Black" /> 
      <Setter Property="FontSize" Value="14" /> 
     </Style> 

     <Storyboard x:Key="FlashBlockTextStoryBoard"> 
      <ObjectAnimationUsingKeyFrames RepeatBehavior="Forever" Storyboard.TargetName="txtButtonFace" Storyboard.TargetProperty="(UIElement.Visibility)"> 
       <DiscreteObjectKeyFrame KeyTime="0:0:0.5" Value="{x:Static Visibility.Hidden}" /> 
       <DiscreteObjectKeyFrame KeyTime="0:0:1" Value="{x:Static Visibility.Visible}" /> 
      </ObjectAnimationUsingKeyFrames> 
     </Storyboard> 

     <Style BasedOn="{StaticResource {x:Type TextBlock}}" x:Key="FlashTextBlock" TargetType="TextBlock"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=checkBox1.IsChecked}" Value="True"> 
        <DataTrigger.EnterActions> 
         <BeginStoryboard Name="storyboard" Storyboard="{StaticResource FlashBlockTextStoryBoard}" /> 
        </DataTrigger.EnterActions> 
        <DataTrigger.ExitActions> 
         <StopStoryboard BeginStoryboardName="storyboard" /> 
        </DataTrigger.ExitActions> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 


    </Window.Resources> 

    <Grid Margin="10,10,10,10" > 
     <Grid.RowDefinitions> 
      <RowDefinition Height="40*"/> 
      <RowDefinition Height="12*"/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="12*" MaxWidth="210"/> 
      <ColumnDefinition Width="20*"/> 
     </Grid.ColumnDefinitions> 

     <Button Grid.Column="1" MaxHeight="70" MaxWidth="150" 
       FontSize="16" Style="{StaticResource SB_BaseGradientButton}" Margin="320,0,29,12" Grid.Row="1"> 
      <TextBlock Name="txtButtonFace" TextAlignment="Center" Text="This Is Test" 
           Style="{StaticResource FlashTextBlock}"> 
      </TextBlock> 
     </Button> 
     <CheckBox Content="Make button flash" Grid.Column="1" Height="16" HorizontalAlignment="Left" Margin="44,24,0,0" 
        Name="checkBox1" VerticalAlignment="Top" Grid.Row="1" /> 
    </Grid> 
</Window> 
+0

WPF의 "깜박임"을 다시 발명하는 데 도움을 준 사람은 나에 의해 투표됩니다. :-) –

+0

더 심각한 문제에 대해 -이 XAML은 무엇입니까? 바인딩 오류가 있는지 확인하기 위해 디버깅하는 동안 출력 창을 살펴 보았습니까? –

답변

1

두 가지 그것은 작동합니다

  • 바인딩 구문이 잘못되었습니다. 그것은 수

    Binding="{Binding Path=IsChecked, ElementName=checkBox1}" 
    
  • 그리고 당신은 StyleTargetName를 사용할 수 없기 때문에 당신의 Storyboard에서 Storyboard.TargetName="txtButtonFace"을 제거 할 수있다.