如何在 WPF 中显示 Spinning Modal
How to show Spinning Modal in WPF
我有一个应用程序在其 MainWindow.xaml 中包含以下代码,以使用 FontAwesome 图标显示旋转模式:
<Grid Visibility="{Binding SpinningModalVisibility}">
<StackPanel>
<fa:ImageAwesome Icon="Spinner" Spin="True" SpinDuration="5"/>
</StackPanel>
</Grid>
在 ViewModel 中,我将调用
SpinningModalVisibility = Visibility.Visible;
Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, (Action)(() =>
{
//MyAction
}));
SpinningModalVisibility = Visibility.Hidden;
但由于某种原因,我的图标没有旋转,而且模态框的行为不正确;有时显示,有时不显示。我是不是做错了什么?
您应该在后台线程上执行该操作。 UI 线程不能同时显示微调器和 运行 您的代码:
SpinningModalVisibility = Visibility.Visible;
Task.Factory.StartNew(()=>
{
//YourAction();
}).ContinueWith(Task =>
{
SpinningModalVisibility = Visibility.Hidden;
}, System.Threading.CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext());
SpinDuration=5 是你的问题!
它从 usercontrol/grid 的负载开始...而不是从可见性变化开始...!测试更大的值
我有一个应用程序在其 MainWindow.xaml 中包含以下代码,以使用 FontAwesome 图标显示旋转模式:
<Grid Visibility="{Binding SpinningModalVisibility}">
<StackPanel>
<fa:ImageAwesome Icon="Spinner" Spin="True" SpinDuration="5"/>
</StackPanel>
</Grid>
在 ViewModel 中,我将调用
SpinningModalVisibility = Visibility.Visible;
Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, (Action)(() =>
{
//MyAction
}));
SpinningModalVisibility = Visibility.Hidden;
但由于某种原因,我的图标没有旋转,而且模态框的行为不正确;有时显示,有时不显示。我是不是做错了什么?
您应该在后台线程上执行该操作。 UI 线程不能同时显示微调器和 运行 您的代码:
SpinningModalVisibility = Visibility.Visible;
Task.Factory.StartNew(()=>
{
//YourAction();
}).ContinueWith(Task =>
{
SpinningModalVisibility = Visibility.Hidden;
}, System.Threading.CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext());
SpinDuration=5 是你的问题!
它从 usercontrol/grid 的负载开始...而不是从可见性变化开始...!测试更大的值