如何在 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 的负载开始...而不是从可见性变化开始...!测试更大的值