zoukankan      html  css  js  c++  java
  • WPF 分页控件 WPF 多线程 BackgroundWorker

    WPF 分页控件 WPF 多线程 BackgroundWorker

      大家好,好久没有发表一篇像样的博客了,最近的开发实在头疼,很多东西无从下口,需求没完没了,更要命的是公司的开发从来不走正规流程啊,

    所以在此希望大家能够多多关注,WPF开发过程中最要名的莫过于UI卡,线程处理不得当,容易出现BUG 下面展示两种开发的实例共享给大家希望对大家有所帮助。

    1.WPF 分页控件

       面对数据过多的时候我们就不得不用分页控件,而分页做多的莫过于处理机制,下面讲解一下分页控件;

       首先页面的布局我就不介绍,页面布局采用中间固定,两端可以自由拉伸。这样可以实用界面的需求

       绑定设置,这里我要分析一种方法绑定的方法:

       后台代码:

       

      /// <summary>
            /// 
            /// 总的资源个数
            /// 
            /// </summary>
    
            public readonly DependencyProperty depTotalCount = DependencyProperty.Register("TotalCount", typeof(int), typeof(UC_Pagging), new UIPropertyMetadata());
    
            public int TotalCount
            {
    
                get { return (int)GetValue(depTotalCount); }
    
    
                set
                {
    
                        SetValue(depTotalCount, value);
                  }
    
             }
    

      

    前台代码:

     1 <UserControl x:Class="TestVST.UC.UC_Pagging"
     2              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     3              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     4              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     5              x:Name="Root"
     6              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     7              mc:Ignorable="d" 
     8              d:DesignHeight="45" d:DesignWidth="600">
     9 
    10    
    11 <Label  Content="{Binding ElementName=Root,Path=TotalCount}" />
    View Code

      

    DependencyProperty 使用很好用的方法当然使用noticy方法也可以,这样就可以,以后我们就可以赋值属性,属性可以直接加载,很方便的。


    2.多线程使用

    我们大多数使用的多线程是:Thread 这个是完全可以的 ,但是 多线程往往会有一系列的问题,处理起来没那么容易,开发的运行也很消耗硬件,

    大家可以参考一下: http://book.51cto.com/art/201109/292354.htm 当然还有 TheadPool 我是很少用。

    建议大家使用 BackGroundWorker

    基本事件

     1   private BackgroundWorker backgroudwork = new BackgroundWorker();
     2 
     3         public MutiBackGroudWork()
     4         {
     5             InitializeComponent();
     6 
     7             backgroudwork.WorkerReportsProgress = true;
     8 
     9             backgroudwork.WorkerSupportsCancellation = true;
    10 
    11             backgroudwork.DoWork += new DoWorkEventHandler(backgroudwork_DoWork);
    12 
    13             backgroudwork.ProgressChanged += new ProgressChangedEventHandler(backgroudwork_ProgressChanged);
    14 
    15             backgroudwork.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroudwork_RunWorkerCompleted);
    16 
    17 
    18         }
    View Code

      基本内容可以看基本事件,然后最主要的是 DOWORK 事件,当生成新的UC控件后,我们必须学要主线程生成,当然子线程要

    通知抓线程生成新的UI控件,生成以后就可以使用,这种方式还是比较方便的,如果点击取消事件那么就会自动的识别 并跳出,

    同时也可以监听到子线程内部错误另外一个属性:backgroudwork.CancellationPending 取消事件触发属性值。

    backgroudwork.CancelAsync(); 随时可以取消线程。


    如果有什么好的设计模式可以给我留言哈~

     
    示例源码 

    下载




      

  • 相关阅读:
    springMVC必须的jar包
    project---clean
    maven项目 启动报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    @ResponseBody 注解
    HttpServletRequest 需要导入xx包?
    Maven中GroupID和ArtifactID
    Java中包、类、方法、属性、常量的命名规则
    使用 @RequestMapping 注解,需要导入的包:spring-webmvc
    【杂题】【动态规划】【搜索】——洛谷P1441砝码称重
    搞清clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop
  • 原文地址:https://www.cnblogs.com/slf007/p/3614329.html
Copyright © 2011-2022 走看看