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";
});
这是我的第一个 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";
});