gpt4 book ai didi

c# - 如何在 Silverlight 4 中等待状态改变转换完成?

转载 作者:可可西里 更新时间:2023-11-01 08:20:13 24 4
gpt4 key购买 nike

我需要更改控件的状态然后执行一些操作。具体来说,我想在隐藏控件之前运行动画。我想做这样的事情:

VisualStateManager.GoToState(control, "Hidden", true); // wait until the transition animation is finished
ParentControl.Children.Remove(control);

问题在于过渡动画是异步运行的,因此在动画开始后控件会立即从可视化树中删除。

那么我该如何等待动画完成呢?

最佳答案

您可以将 Storyboard.Completed 事件处理程序附加到 Storyboard 或将 VisualStateGroup.CurrentStateChanged 事件处理程序附加到 VisualStateGroup:

<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
x:Class="SilverlightApplication7.MainPage"
Width="640" Height="480">

<Grid x:Name="LayoutRoot" Background="White">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="VisualStateGroup" >
<VisualState x:Name="Hidden">
<Storyboard Completed="OnHidden">
<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="rectangle" d:IsOptimized="True"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Rectangle x:Name="rectangle" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="136" Margin="48,72,0,0" Opacity="0" Stroke="Black" VerticalAlignment="Top" Width="208"/>
</Grid>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SilverlightApplication7
{
public partial class MainPage : UserControl
{
public MainPage()
{
// Required to initialize variables
InitializeComponent();

this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
VisualStateManager.GoToState(this, "Hidden", true);
}

private void OnHidden(object storyboard, EventArgs args)
{

}
}

关于c# - 如何在 Silverlight 4 中等待状态改变转换完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3653394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com