zoukankan      html  css  js  c++  java
  • Dev Express WPF 在当前界面显示进度加载等待信息

    执行耗时任务时,为提高用户体验,一般会添加进度状态信息。Dev Express 的 LoadingDecorator 可以实现在当前界面中显示进度信息。

    效果图如下:

    默认 LoadingDecorator 只有一个加载状态,没有信息提示。以下实例通过 DataTemplate 的方式自定义 LoadingDecorator 提示信息展示,并通过数据绑定的方式动态更新提示信息。

    关键代码如下:

    <dx:LoadingDecorator x:Name="loading" IsSplashScreenShown="{Binding IsLoading}" SplashScreenDataContext="{Binding}" OwnerLock="InputOnly">
                <dx:LoadingDecorator.SplashScreenTemplate>
                    <DataTemplate>
                        <Grid>
                            <dx:WaitIndicator DeferedVisibility="True" Content="{Binding}">
                                <dx:WaitIndicator.ContentTemplate>
                                    <DataTemplate>
                                        <StackPanel Orientation="Vertical">
                                            <TextBlock Text="{Binding ProcessItem}" FontSize="20"/>
                                            <TextBlock Text="{Binding ItemProgress}"/>
                                        </StackPanel>
                                    </DataTemplate>
                                </dx:WaitIndicator.ContentTemplate>
                            </dx:WaitIndicator>
                        </Grid>
                    </DataTemplate>
                </dx:LoadingDecorator.SplashScreenTemplate>
            </dx:LoadingDecorator>
    添加一个按钮来启动模拟的耗时任务,并显示进度信息。
    <Button Content="Begin" Command="{Binding BeginCommand}"/>
            private void BeginExecute(object obj)
            {
                IsLoading = true;
                Task.Run(new Action(() => {
                    for (int j = 0; j < 5; j++)
                    {
                        ProcessItem = "步骤" + (j + 1) + "执行";
                        for (int i = 0; i < 100; i++)
                        {
                            Thread.Sleep(100);
                            ItemProgress = string.Format("步骤{0},执行进度{1}/100", j + 1, i);
                        }
                    }
                    IsLoading = false;
                }));   
            }

    使用 Task.Run 多线程处理,解决界面假死问题。

    完整Demo

    
    
  • 相关阅读:
    执行makemigrations后错误集锦
    Django+xadmin的安装与配置
    MyEclipse Web项目部署失败:Deployment failure on Tomcat 7.x.Could not copy all resources to XXX.
    用户场景描述
    <packaging>pom</packaging>
    Tomcat的3种部署方式
    camelCase骆驼拼写法
    What does ‘composer dump-autoload’ do in Laravel?
    empty方法
    php页面meta头设置
  • 原文地址:https://www.cnblogs.com/runningRain/p/14044148.html
Copyright © 2011-2022 走看看