2011-03-07 7 views

답변

5

다음은 TextBlock의 Text 속성을 변경할 때 항목의 불투명도를 애니메이션으로 만드는 사용자 정의 컨트롤의 xaml입니다.

PropertyChangedTrigger 및 ControlStoryboard 동작을 사용하여이를 발생시킵니다. 이러한 항목은 조화와 함께 설치 얻을 DLL을에서 온,하지만 당신은 혼합이없는 경우 별도로 설치할 수 있습니다 : 여기

<UserControl 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
    xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" 
    x:Class="TextboxAnimation.MainPage" 
    Width="640" Height="480"> 
    <UserControl.Resources> 
     <Storyboard x:Name="AnAnimation"> 
      <DoubleAnimationUsingKeyFrames 
       Storyboard.TargetProperty="(UIElement.Opacity)" 
       Storyboard.TargetName="animationTextBlock"> 
       <EasingDoubleKeyFrame KeyTime="0" Value="0"/> 
       <EasingDoubleKeyFrame KeyTime="0:0:1" Value="1"/> 
      </DoubleAnimationUsingKeyFrames> 
     </Storyboard> 
    </UserControl.Resources> 

    <StackPanel x:Name="LayoutRoot" Background="White"> 
     <TextBlock x:Name="textBlock" 
      HorizontalAlignment="Left" Text="Click Me To Change Text" 
      MouseLeftButtonDown="TextBlockClicked"> 
      <i:Interaction.Triggers> 
       <ei:PropertyChangedTrigger Binding="{Binding Text, ElementName=textBlock}"> 
        <ei:ControlStoryboardAction Storyboard="{StaticResource AnAnimation}"/> 
       </ei:PropertyChangedTrigger> 
      </i:Interaction.Triggers> 
     </TextBlock> 
     <TextBlock 
      x:Name="animationTextBlock" 
      Text="Animate Me!" Margin="0,8,0,0" Opacity="0"/> 
    </StackPanel> 
</UserControl> 

Blend 4 SDK 그 뒤에 코드가있는 TextBlock을 변경하는 클릭 이벤트에 사용됩니다 텍스트 속성 :

int times = 0; 

private void TextBlockClicked(object sender, System.Windows.Input.MouseButtonEventArgs e) 
{ 
    times++; 

    textBlock.Text = String.Format("I've been clicked and changed {0} times!", times); 
} 
+0

코드를 제공해 주셔서 감사합니다. 훌륭합니다. 그러나 나는 텍스트 블록을 클릭하지 않을 것이다. 나는 동적으로 텍스트를 업데이트 할 것이다. 일어날 때마다 애니메이션을 실행하면됩니다. WPF에서는 훨씬 쉬울 것이지만 Silverlight가 필요합니다. 어떤 아이디어? – vladc77

+0

이 예제에서는 "textBlock.Text"가 변경 될 때마다 애니메이션이 실행됩니다. 시연을 위해 클릭이 발생했을 때 변경 만하고 있지만 어디에서든지 변경할 수 있습니다. – grimus

+0

나는 최신 SDK를 가지고있다. 상호 작용/상호 작용 동작을 찾을 수 없습니다. 이전 SDK를 설치해야합니까? 고맙습니다. – vladc77

관련 문제