C# WPF TextBlock 可见性在 StoryBoard 之后不会改变
C# WPF TextBlock Visibility doesn't change after StoryBoard
我有一个带按钮的 WPF 应用程序,单击该按钮时会执行一个函数,将 TextBlock 的可见 属性 变为可见:
savetxt.Visibility = Visibility.Visible;
System.Windows.MessageBox.Show(savetxt.Visibility.ToString());
txt.Visibility.ToString());
当 TextBlock 变为可见时,开始淡入淡出的故事板:
<TextBlock x:Name="savetxt" Visibility="Hidden" Text="Hello">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<Trigger Property="Visibility" Value="Visible">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="0:0:0" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation BeginTime="0:0:0.0" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:0.2"/>
<DoubleAnimation BeginTime="0:0:5.0" Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:0.5"/>
<ObjectAnimationUsingKeyFrames BeginTime="0:0:5.5" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Hidden</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
我第一次按下按钮时,MessageBox.Show 显示 Visible,故事板成功开始制作动画。但是,当我第二次按下按钮时,MessageBox.Show 显示 Hidden 并且没有其他任何反应。
谁能帮我弄清楚为什么 savetxt.Visibility = Visibility.Visible;第一次后不改变可见性?
您可以从代码中设置故事板。
xaml
<TextBlock Grid.Row="0" x:Name="savetxt" Visibility="Hidden" Text="Hello"></TextBlock>
<Button Grid.Row="1" Content="Test" Height="25" Width="75" Click="Button_Click"></Button>
代码
private void Button_Click(object sender, RoutedEventArgs e)
{
savetxt.Visibility = Visibility.Visible;
Storyboard storyboard = new Storyboard();
TimeSpan duration = new TimeSpan(0, 0, 5);
DoubleAnimation animation = new DoubleAnimation();
animation.From = 1.0;
animation.To = 0.0;
animation.Duration = new Duration(duration);
Storyboard.SetTargetName(animation, savetxt.Name);
Storyboard.SetTargetProperty(animation, new PropertyPath(OpacityProperty));
// Add the animation to the storyboard
storyboard.Children.Add(animation);
// Begin the storyboard
storyboard.Begin(this);
MessageBox.Show(savetxt.Visibility.ToString());
}
我有一个带按钮的 WPF 应用程序,单击该按钮时会执行一个函数,将 TextBlock 的可见 属性 变为可见:
savetxt.Visibility = Visibility.Visible;
System.Windows.MessageBox.Show(savetxt.Visibility.ToString());
txt.Visibility.ToString()); 当 TextBlock 变为可见时,开始淡入淡出的故事板:
<TextBlock x:Name="savetxt" Visibility="Hidden" Text="Hello">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<Trigger Property="Visibility" Value="Visible">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="0:0:0" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation BeginTime="0:0:0.0" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:0.2"/>
<DoubleAnimation BeginTime="0:0:5.0" Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:0.5"/>
<ObjectAnimationUsingKeyFrames BeginTime="0:0:5.5" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Hidden</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
我第一次按下按钮时,MessageBox.Show 显示 Visible,故事板成功开始制作动画。但是,当我第二次按下按钮时,MessageBox.Show 显示 Hidden 并且没有其他任何反应。 谁能帮我弄清楚为什么 savetxt.Visibility = Visibility.Visible;第一次后不改变可见性?
您可以从代码中设置故事板。
xaml
<TextBlock Grid.Row="0" x:Name="savetxt" Visibility="Hidden" Text="Hello"></TextBlock>
<Button Grid.Row="1" Content="Test" Height="25" Width="75" Click="Button_Click"></Button>
代码
private void Button_Click(object sender, RoutedEventArgs e)
{
savetxt.Visibility = Visibility.Visible;
Storyboard storyboard = new Storyboard();
TimeSpan duration = new TimeSpan(0, 0, 5);
DoubleAnimation animation = new DoubleAnimation();
animation.From = 1.0;
animation.To = 0.0;
animation.Duration = new Duration(duration);
Storyboard.SetTargetName(animation, savetxt.Name);
Storyboard.SetTargetProperty(animation, new PropertyPath(OpacityProperty));
// Add the animation to the storyboard
storyboard.Children.Add(animation);
// Begin the storyboard
storyboard.Begin(this);
MessageBox.Show(savetxt.Visibility.ToString());
}