如何在WPF C#中三秒钟后在两个视图之间移动?

问题描述 投票:0回答:1

我目前正在一个项目上,有一张要显示3秒钟的图像,然后在其余的运行过程中将其隐藏起来并显示主网格。

我试图做的是将主网格放在不透明度为0或Visibility = Visibility.Hidden的子网格中,并在公共MainWindow(){}方法后面的代码中实现秒表。当我尝试一个if语句:if(stopwatch.ElapsedMilliseconds> 3000){Change Opacity}时,我尚未达到条件并与第一个窗口堆叠在一起。当我尝试使用while方法时,只需添加一个空的while循环,三秒钟内什么都不会显示,然后我很快就看到了主网格。

如何获得所需的结果?

提前感谢!

public MainWindow()
        {
            InitializeComponent();

            ViewModel = (Application.Current as App).VM;
            DataContext = ViewModel;
            Dashboard.DataContext = ViewModel;

            this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
            this.Loaded += new RoutedEventHandler(myMediaElement_MediaEnded);

            TimeGrinder();
            Page1.Opacity = 0;
            MainGrid.Opacity = 100;
        }

        public void TimeGrinder()
        {
            var stopWatch = new Stopwatch();
            stopWatch.Start();
            while (stopWatch.ElapsedMilliseconds < 3000) { }
            return;
        }
c# wpf time transition stopwatch
1个回答
1
投票

可能有帮助:

using System.Threading;

...

private async void HideGrid()
{
    Page1.Opacity = 0;
    MainGrid.Opacity = 100;
    await Task.Delay(3000);
    //await Task.Run(() => Thread.Sleep(3000));
    Page1.Opacity = 100;
    MainGrid.Opacity = 0;
}

编辑为@aepot建议

© www.soinside.com 2019 - 2024. All rights reserved.