Skip to content

Loading

闫驚鏵(Jinhua Yan) edited this page Jul 9, 2023 · 3 revisions

Show Loading

 <Border Background="Red" 
     wd:Loading.IsShow="true">
       <TextBlock Text="Mask 0"
          VerticalAlignment="Center" 
          HorizontalAlignment="Center"/>
 </Border>

Show NormalLoading

 <Image Source="pack://application:,,,/WPFDevelopers.Samples;component/Images/Breathe/0.jpg"
        wd:Loading.LoadingType="Normal"
        wd:Loading.IsShow="{Binding ElementName=MyCheckBox,Path=IsChecked}"/>

BasicControl Show Loading

1)Add Loading

  <Button Name="btnLoadingTask" Content="LoadingTask" Click="LoadingTask_Click" 
          Style="{DynamicResource SuccessPrimaryButton}" Margin="10,0"/>
  <Button Name="btnLoading" Click="BtnLoading_Click" Content="AddLoading"
          wd:Loading.LoadingType="Normal"
          Style="{DynamicResource WarningPrimaryButton}"/>
  <Button Name="btnOffTask" Click="BtnOffTask_Click" 
          Margin="10,0" Content="Off Task"
          Style="{DynamicResource DangerPrimaryButton}"/>

2)CSharp processing task events

    private void BtnOffTask_Click(object sender, RoutedEventArgs e)
    {
        if (tokenSource == null) return;
        tokenSource.Cancel();
        Loading.SetIsShow(btnLoadingTask, false);
    }
    private CancellationTokenSource tokenSource;
    /// <summary>
    /// 此处演示关闭loading停止任务
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void LoadingTask_Click(object sender, RoutedEventArgs e)
    {
        tokenSource = new CancellationTokenSource();
        var cancellationToken = tokenSource.Token;

        var task = new Task(() =>
        {
            for (int i = 0; i < 10; i++)
            {
                //这里做自己的事情
                if (tokenSource.IsCancellationRequested)
                    return;
                Thread.Sleep(1000);
            }
        }, cancellationToken);
        task.ContinueWith(previousTask =>
        {
            if (tokenSource.IsCancellationRequested)
                return;
            Loading.SetIsShow(btnLoadingTask, false);
        }, TaskScheduler.FromCurrentSynchronizationContext());
        Loading.SetIsShow(btnLoadingTask, true);
        task.Start();
    }
    private void BtnLoading_Click(object sender, RoutedEventArgs e)
    {
        var task = new Task(() => { Thread.Sleep(5000); });
        task.ContinueWith(previousTask => { Loading.SetIsShow(btnLoading, false); }, TaskScheduler.FromCurrentSynchronizationContext());
        Loading.SetIsShow(btnLoading, true);
        task.Start();
    }
Clone this wiki locally