欢迎来到天天文库
浏览记录
ID:39470192
大小:250.73 KB
页数:9页
时间:2019-07-04
《WPF设计自定义控件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、在实际工作中,WPF提供的控件并不能完全满足不同的设计需求。这时,需要我们设计自定义控件。这里LZ总结一些自己的思路,特性如下:·Coupling·UITemplate·Behaviour·FunctionPackage下面举例说说在项目中我们经常用到调音台音量条,写一个自定义控件模拟调音台音量条。自定义控件SingnalLight,实现功能·接收来自外部的范围0~100的数值·实时显示接收数值·数值范围0~50显示绿色,50~85显示黄色,85~100显示红色,没有数值显示褐色·可在父控件上拖拽该控件首先NewWPFApplicationProject,在Ui上放2个Button,代码
2、:123456Start,Stop事件实现1privatevoidStart_Click(objectsender,RoutedEventArgse){2SignalManager.Instance.Start();3
3、}45privatevoidStop_Click(objectsender,RoutedEventArgse){6SignalManager.Instance.Stop();7}这里创建一个SignalManager类,在Start时开启一个计时器,每隔1秒生成一个0~100的随机数,并作为模拟数值输出。SignalManager类代码:1namespaceSignalLightDemo.Business{2publicclassSignalManager:DependencyObject{3publicstaticSignalManagerInstance{get{returninst
4、ance;}}45publicintRandomA{6get{return(int)GetValue(RandomAProperty);}7set{SetValue(RandomAProperty,value);}8}910SignalManager(){11InitializationTimer();12}1314publicvoidStart(){15if(!timerA.Enabled)timerA.Start();16}1718publicvoidStop(){19if(timerA.Enabled)timerA.Stop();20}2122privatevoidInitiali
5、zationTimer(){23timerA=newTimer();24timerA.Interval=INTERVAL;25timerA.Elapsed+=timerA_Elapsed;26}2728voidtimerA_Elapsed(objectsender,ElapsedEventArgse){29this.Dispatcher.BeginInvoke(newAction(()=>{30RandomA=a.Next(MAX_VALUE);31}));32}3334publicstaticreadonlyDependencyPropertyRandomAProperty=35Dep
6、endencyProperty.Register("RandomA",typeof(int),typeof(SignalManager),newPropertyMetadata(0));3637privateRandoma=newRandom((int)DateTime.Now.Ticks);38privateconstintMAX_VALUE=100;39privateconstdoubleINTERVAL=1000;40privateTimertimerA;41privatestaticSignalManagerinstance=newSignalManager();42}43}下面
7、来重点:1.创建自定义控件SingnalLight1publicclassSingnalLight:ContentControl{2publicintValueA{3get{return(int)GetValue(ValueAProperty);}4set{SetValue(ValueAProperty,value);}5}678publicSingnalLight(){9this.AllowDrop=true;10}111213s
此文档下载收益归作者所有