UWP 更新 UI 核心应用程序..运行同步

本文关键字:运行 同步 应用程序 核心 更新 UI UWP | 更新日期: 2023-09-27 18:35:14

这是我的第一篇文章,但我在每个论坛上都在寻找 2 周的答案。例如,我想做的是按下一个按钮并更新图像 3 次,等待 3 秒。我正在使用 MVVM 模式。

在我看来。

                <TextBlock  Margin="0,10,0,0"
                    Text="{Binding MyImageSource}" />
                <Image Source="{Binding MyImageSource}"
                       Width="40"
                       Height="40">
                </Image>
    private async void bt_Click(object sender, RoutedEventArgs e)
    {
        await MyViewmodel.SetCardsBackGround();
    }

在我的ViewModel中,我等待设置我的属性,我等待等等。有一个问题,屏幕上的文本更新了,但图像没有更新。我不明白我的绑定适用于文本,但不适用于图像。

    public async Task SetCardsBackGround()
    {
        System.Threading.Tasks.Task.Delay(<3 seconds>).Wait(); 
        await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
        () =>
        {
          MyImageSource = "ms-appx:///Assets/StoreLogo.png";
        });
        System.Threading.Tasks.Task.Delay(<3 seconds>).Wait(); 
        await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
        () =>
        {
          MyImageSource = "ms-appx:///Assets/StoreLogo1.png";
        });
        System.Threading.Tasks.Task.Delay(<3 seconds>).Wait(); 
        await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
        () =>
        {
          MyImageSource = "ms-appx:///Assets/StoreLogo2.png";
        });
    });

所以我的结果是:
等待 3 秒:
文本块 = 毫秒 appx:///Assets/StoreLogo.png
图像未显示挪威克朗
等待 3 秒:
文本块 = 毫秒 appx:///Assets/StoreLogo1.png
图像未显示挪威克朗
等待 3 秒:
文本块 = 毫秒 appx:///Assets/StoreLogo2.png
图像显示正常

真的不确定我是否以正确的方式做到这一点。您的帮助将不胜感激。

UWP 更新 UI 核心应用程序..运行同步

试试这个:

public async Task SetCardsBackGround()
{
    await System.Threading.Tasks.Task.Delay(<3 seconds>); 
    MyImageSource = "ms-appx:///Assets/StoreLogo.png";
    await System.Threading.Tasks.Task.Delay(<3 seconds>); 
    MyImageSource = "ms-appx:///Assets/StoreLogo1.png";
    await System.Threading.Tasks.Task.Delay(<3 seconds>); 
    MyImageSource = "ms-appx:///Assets/StoreLogo2.png";
});