知方号

知方号

WPFWpf自定义控件及其数据自动刷新

WPFWpf自定义控件及其数据自动刷新

之前四路温度监控的时候有过这个想法,但是介于Winform用代码添加控件的方法过于蛋疼所以最终采用了4线波形图来实现。

但是在接触wpf后,这个问题的两个难点(控件设计麻烦和容器布局麻烦)迎刃而解,于是便有了这个实验

在项目中添加自定义控件

并在XAML中对其界面进行编辑

代码如下:

拥有连个可设置属性,一个是温度计的编号,一个是温度。同时在设计的时候应该限定其大小,否则可能会出现因为内容大小变化出现自适应现象破坏观感,这里采用设置MaxHeight和MinHeight为同一值来实现,宽度同理。

接下来编写后台代码,实现数据的自动刷新

本空控件拥有两组属性,一组是温度(私有),另一组是用于识别控件序号的的识别号(公有)

public int IDNo;private double Temp;

控件初始化事件

初始化时默认温度为25℃,同时需要为控件输入一个编号

public Moniter(int No) { InitializeComponent(); txtName.Text = No.ToString(); IDNo = No; Temp = 25; txtTemp.Text = "25℃"; }

数据刷新事件,不采用反射模式(挺麻烦的)

public void RefreshData(double data) { Temp += data; txtTemp.Text = Temp.ToString() + "℃"; }

这样一个温度计自定义控件就设计完成了。

--------------------------------------------------------------------------分割线--------------------------------------------------------------------------------------

紧接着设计主界面,在主界面中我们需要一个容器来存放我们的控件,StackPanel、ListView和DataGrind都是可以的,但是由于我们设计的控件是图像类控件且可能数量角度,在这里采用ListView作为容器存放控件,XAML代码如下:

效果如图:

在这里有两个小细节

      其一是ListView的拉动和自适应设计(默认的ListView会将控件竖排拉伸并且无法向下滑动,明显不符合我们的设计要求,所以对其ItemsPanel进行设置使其可以在空间允许的情况下横向摆放控件;同时如果不设置长度的话容器将无法拖动,所以我们将其height属性设置为一个合适的值)

其次是用来选择控件编号的输入框,它有一组默认提示文字,实现方式如下

接着是后台代码:

按下添加按钮会一次性添加10个温度计控件到容器中

for (int i = 1; i

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。