显示系统托盘的进度条,加载中

network | | 访问(38)
/// <summary>
/// 显示系统托盘的进度条,加载中
/// </summary>
public static void Loading(PhoneApplicationPage page, object model, string test = "") {
    ProgressIndicator progressIndicator = SystemTray.ProgressIndicator;
    if (progressIndicator != null) {
        return;
    }

    progressIndicator = new ProgressIndicator();
    SystemTray.SetProgressIndicator(page, progressIndicator);
    Binding binding = new Binding("IsLoading") {
        Source = model
    };
    BindingOperations.SetBinding(progressIndicator, ProgressIndicator.IsVisibleProperty, binding);
    binding = new Binding("IsLoading") {
        Source = model
    };
    BindingOperations.SetBinding(progressIndicator, ProgressIndicator.IsIndeterminateProperty, binding);
    progressIndicator.Text = test;

}

/// <summary>
/// 显示系统托盘的进度条,加载中,设置,显示加载进度条显示时间
/// </summary>
/// <param name="page">页面对象</param>
/// <param name="text">提示文字</param>
/// <param name="millisecondsDelay">持续时间</param>
/// <returns></returns>
public static bool LoadingTask(PhoneApplicationPage page, string text = "", int millisecondsDelay = 3000) {
    bool isEnd = false; // 加载的状态
    // 显示系统托盘的进度条
    Microsoft.Phone.Shell.ProgressIndicator progressIndicator = new Microsoft.Phone.Shell.ProgressIndicator();
    Microsoft.Phone.Shell.SystemTray.ProgressIndicator = progressIndicator;
    progressIndicator.Text = text;
    progressIndicator.IsIndeterminate = true;
    progressIndicator.IsVisible = true;
    // 模拟后台耗时任务拉取数据的场景
    Task.Factory.StartNew(async() = >{
        await Task.Delay(millisecondsDelay);
        // 调用UI线程添加数据
        page.Dispatcher.BeginInvoke(() = >{
            progressIndicator.IsVisible = false; // 关闭进度条
            isEnd = true;
        });
    });
    return isEnd;
}

//调用代码
Util.LoadingTask(this, "大家好,我是Ject,我正在努力加载中...", 5000);
Util.Loading(this, _viewModel, "大家好,我是Ject,我正在努力加载中...");

显示结果: