最近要用到乙個計時功能,所以臨時寫了乙個控制項,以備以後再次使用,不夠完善,但功能算是實現了.效果圖如下:
————————–分割線———————————————-
步驟:
1.新建乙個類庫,名為wpfcustomcontrols(或其它,下同)
刪除預設的cs檔案.新增乙個theme資料夾,在theme資料夾下新建乙個資源字典名為generic.xaml .結構如下,右擊專案,新增乙個自定義控制項(wpf),名為timer.cs,最終目錄結構為:
———————-注意注意—–要上**了——————————–
2.timer.cs內timer類
public
class timer : control
public
timer()
private
void
timer_tick1(object sender, eventargs e)
::", temp.minutes, temp.seconds, temp.milliseconds);
}private timespan per = new timespan(0, 0, 0, 0, 45);//時間間隔
dispatchertimer timer=new dispatchertimer();//計時器
public
int status = 0;//0初始狀態 1 進行狀態 2 暫停狀態
public
string _text
set
}///
/// 介面繫結用於顯示時間
///public
static
readonly dependencyproperty _textproperty =
dependencyproperty.register("_text", typeof(string), typeof(timer), new propertymetadata("0:0:0"));
public
static
readonly routedevent statuschangedevent = eventmanager.registerroutedevent("statuschanged", routingstrategy.bubble, typeof(routedpropertychangedeventhandler), typeof(timer));
public
event routedpropertychangedeventhandler statuschanged
remove
}private timespan pausetime=timespan.zero;//從開始到現在期間暫停的時間
private datetime pausestarttime;// 暫停 開始的時間
private datetime starttime;
public datetime starttime
set
}public
override
void
button stopbtn = base.gettemplatechild("stopbutton") as button;
if(stopbtn!=null)
}private
void
stopbtn_click(object sender, routedeventargs e)
raisestatuschangedevent(oldstatus, status);
}private
void
raisestatuschangedevent(int oldvalue,int newvalue)
private
void
changedstatusbutton_click(object sender, routedeventargs e)
else
if (status == 1)
else
// if(status==2)//必然(繼續)}}
——————–又要上了—————————————————–
timer.xaml內容如下:
""
xmlns:x=""
xmlns:local="clr-namespace:wpfcustomcontrols">
property="template">
"">
background=""
borderbrush=""
borderthickness=""
padding="0" margin="0" width=""
height=""
cornerradius="5">
"4*">
"1.6*">
"1.6*">
grid.columndefinitions>
"left" margin="10 0 0 0" verticalalignment="center"
grid.column="0"
text="">
grid.column="1" width="40" content="開始"
background="transparent" horizontalalignment="center" margin="1" borderthickness="0">button>
grid.column="2" content="結束"
background="transparent" horizontalalignment="center" margin="1" borderthickness="0">
button>
grid>
setter.value>
setter>
style>
—————————-完成後先生成專案—————————————
右擊解決方案,新建乙個wpf應用程式 ,
新增wpfcustomcontrols的引用,
雙擊開啟mainwindow.xaml
新增下圖標註內容:
計時器控制項
計時器控制項可以每隔乙個時間間隔 interval 觸發乙個計時器事件 timer 所謂的時間間隔,指的是各個計時器事件之間的時間,一般以毫秒為基本單位。計時器在1秒中內最多產生18個事件,所以兩個事件之間的時間間隔精確到1 18秒。計時器控制項在執行時不可見。計時器控制項的常用屬性 enabled...
WPF自定義控制項(四) 自定義控制項
原文 wpf自定義控制項 四 自定義控制項 在實際工作中,wpf提供的控制項並不能完全滿足不同的設計需求。這時,需要我們設計自定義控制項。這裡lz總結一些自己的思路,特性如下 下面舉例說說在專案中我們經常用到調音台音量條,寫乙個自定義控制項模擬調音台音量條。自定義控制項singnallight,實現...
WPF控制項自定義事件
第一步 定義乙個委託,委託屬於乙個定義,是和類 介面類似的,通常放在外部 輕提示事件委託 public delegate void sendmessageeventhandle string text 第二步 定義乙個sendmessageeventhandle型別事件,事件屬於類的成員,所以要放在...