UWP 正在更新 ui CoreApplication...runasync

UWP Updating ui CoreApplication...runasync

这是我的第一个 post 但我花了 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 秒:
TextBlock = ms-appx:///Assets/StoreLogo.png
图片未显示 NOK
等待 3 秒:
TextBlock = ms-appx:///Assets/StoreLogo1.png
图片未显示 NOK
等待 3 秒:
TextBlock = ms-appx:///Assets/StoreLogo2.png
图片显示OK

而且我真的不确定我这样做的方式是否正确。非常感谢您的帮助。

试试这个:

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";
});