WPF 分页控件 WPF 多线程 BackgroundWorker
大家好,好久没有发表一篇像样的博客了,最近的开发实在头疼,很多东西无从下口,需求没完没了,更要命的是公司的开发从来不走正规流程啊,
所以在此希望大家能够多多关注,WPF开发过程中最要名的莫过于UI卡,线程处理不得当,容易出现BUG 下面展示两种开发的实例共享给大家希望对大家有所帮助。
1.WPF 分页控件
面对数据过多的时候我们就不得不用分页控件,而分页做多的莫过于处理机制,下面讲解一下分页控件;
首先页面的布局我就不介绍,页面布局采用中间固定,两端可以*拉伸。这样可以实用界面的需求
绑定设置,这里我要分析一种方法绑定的方法:
后台代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/// <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}" />
1
|
DependencyProperty 使用很好用的方法当然使用noticy方法也可以,这样就可以,以后我们就可以赋值属性,属性可以直接加载,很方便的。<br><br><br><strong>2.多线程使用<br><br></strong>我们大多数使用的多线程是:Thread 这个是完全可以的 ,但是 多线程往往会有一系列的问题,处理起来没那么容易,开发的运行也很消耗硬件,<br><br>大家可以参考一下: <a href= "http://book.51cto.com/art/201109/292354.htm" >http://book.51cto.com/art/201109/292354.htm</a> 当然还有 TheadPool 我是很少用。<br><br>建议大家使用 BackGroundWorker <br><br>基本事件<br><br>
|
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 }
基本内容可以看基本事件,然后最主要的是 DOWORK 事件,当生成新的UC控件后,我们必须学要主线程生成,当然子线程要
通知抓线程生成新的UI控件,生成以后就可以使用,这种方式还是比较方便的,如果点击取消事件那么就会自动的识别 并跳出,
同时也可以监听到子线程内部错误另外一个属性:backgroudwork.CancellationPending 取消事件触发属性值。
backgroudwork.CancelAsync(); 随时可以取消线程。
1
|
<br>如果有什么好的设计模式可以给我留言哈~<br><br> |
1
|
|