新手请教:圆的颜色如何根据后台的状态字节而改变?

fengws_sd 2019-01-30 09:03:32
第一次接触WPF,没有任何基础。想学习一下完成如下任务:
圆的颜色代表一台电机的不同状态, 停止:白色, 运行:绿色, 故障:红色。分别用数字 0,1,2表示以上状态。
就是想做一个界面,用一个状态字实现前台圆的颜色根据状态字的变化而自动变化。
学习了一段时间却没有头绪,请高手指点一下。
...全文
239 点赞 收藏 16
写回复
16 条回复
fengws_sd 2019年03月19日
谢谢groveer,给了我很好的思路。
回复 点赞
groveer 2019年03月16日
你说过你定义了好多int类型的变量 其实我是非常不爽这种做法,要知道C#是面向对象编程,你完全可以将同种类型的数据封装到一个类里面,比如我有一个传感器 用来测量温度 湿度和风速,并且通过串口接收传感器数据,那么我完全可以把温度、湿度、风速这些数据封装成一个类,开放三个属性,然后MainWindow中实例化这样一个类 串口接收到数据就将类的三个属性进行更新,而定义了INotifyPropertyChanged接口,就可以实时更新界面上的数据
回复 点赞
fengws_sd 2019年03月16日
groveer,如果必要绑定文本元素才行的话,一台设备需额外加一个文本元素是不是太繁琐?
回复 点赞
fengws_sd 2019年03月16日
引用 8 楼 groveer 的回复:
[quote=引用 7 楼 fengws_sd 的回复:]
[quote=引用 5 楼 groveer 的回复:]
[quote=引用 4 楼 fengws_sd 的回复:]
[quote=引用 1 楼 groveer 的回复:]
ellipse元素fill属性绑定 使用后台转换器 或者简单点 根据值直接后台改变fill属性

能否具体一些?想实现数据绑定功能。后台也不需再编程修改界面,由系统根据状态字自动显示。[/quote]


就是写个转换器,前台设置绑定属性和转换器,根据输入的值自动判断需要显示的颜色[/quote]

大侠,我想通过数据触发器实现,不要代码可否?[/quote]
你要的数据触发器:
[/quote]

首先感谢groveer的耐心指导! 您绑定的是一个文本元素是可以实现的。问题是我在C#代码里定义了好多的int型变量,通过与设备通讯读取电机的状态。能否直接绑定到int变量?现在就卡在这里了。请指教!再次感谢您的帮助
回复 点赞
groveer 2019年03月16日
引用 13 楼 fengws_sd 的回复:
[quote=引用 12 楼 groveer 的回复:]
如果后台有C#代码,并且能取到0 1 2这些值 直接根据值改变fill属性就好了,干嘛还要这么复杂?还有绑定并不是只能绑定文本框,可以绑定其他很多东西,多去看看书吧

我也正在看《WPF编程宝典》和配合视频学习。绑定有元素和非元素绑定。但就是不知道非元素如何与一个c#里面的定义的内存变量绑定。工控设备比较多,通过绑定也是为了最大限度的减少后台代码。哪怕绑定复杂些也是值得的。还请指教[/quote]
不管界面元素绑定什么东西 这个东西必然是个数据的载体,它可以绑定其他界面元素的属性值,也可以绑定自定义的类,下面我给出一个绑定自定义类的Demo,两种方式,一种通过转换器将数值转换为Brush颜色 一种是通过数据触发器:
转换器实现:

后台代码:

数据触发器实现:

后台代码和前者相同,只是不需要FillConveter类
回复 点赞
fengws_sd 2019年03月16日
引用 12 楼 groveer 的回复:
如果后台有C#代码,并且能取到0 1 2这些值 直接根据值改变fill属性就好了,干嘛还要这么复杂?还有绑定并不是只能绑定文本框,可以绑定其他很多东西,多去看看书吧

我也正在看《WPF编程宝典》和配合视频学习。绑定有元素和非元素绑定。但就是不知道非元素如何与一个c#里面的定义的内存变量绑定。工控设备比较多,通过绑定也是为了最大限度的减少后台代码。哪怕绑定复杂些也是值得的。还请指教
回复 点赞
groveer 2019年03月16日
如果后台有C#代码,并且能取到0 1 2这些值 直接根据值改变fill属性就好了,干嘛还要这么复杂?还有绑定并不是只能绑定文本框,可以绑定其他很多东西,多去看看书吧
回复 点赞
groveer 2019年03月16日
引用 10 楼 fengws_sd的回复:
groveer,如果必要绑定文本元素才行的话,一台设备需额外加一个文本元素是不是太繁琐?
谁告诉你只能绑定文本框,绑定任何元素都行,建议你先从基础知识看起
回复 点赞
groveer 2019年03月15日
引用 7 楼 fengws_sd 的回复:
[quote=引用 5 楼 groveer 的回复:]
[quote=引用 4 楼 fengws_sd 的回复:]
[quote=引用 1 楼 groveer 的回复:]
ellipse元素fill属性绑定 使用后台转换器 或者简单点 根据值直接后台改变fill属性

能否具体一些?想实现数据绑定功能。后台也不需再编程修改界面,由系统根据状态字自动显示。[/quote]


就是写个转换器,前台设置绑定属性和转换器,根据输入的值自动判断需要显示的颜色[/quote]

大侠,我想通过数据触发器实现,不要代码可否?[/quote]
你要的数据触发器:
回复 点赞
fengws_sd 2019年03月14日
引用 5 楼 groveer 的回复:
[quote=引用 4 楼 fengws_sd 的回复:]
[quote=引用 1 楼 groveer 的回复:]
ellipse元素fill属性绑定 使用后台转换器 或者简单点 根据值直接后台改变fill属性

能否具体一些?想实现数据绑定功能。后台也不需再编程修改界面,由系统根据状态字自动显示。[/quote]


就是写个转换器,前台设置绑定属性和转换器,根据输入的值自动判断需要显示的颜色[/quote]

大侠,我想通过数据触发器实现,不要代码可否?
回复 点赞
qq14923349 2019年02月13日
mvvm
回复 点赞
groveer 2019年02月10日
引用 4 楼 fengws_sd 的回复:
[quote=引用 1 楼 groveer 的回复:]
ellipse元素fill属性绑定 使用后台转换器 或者简单点 根据值直接后台改变fill属性

能否具体一些?想实现数据绑定功能。后台也不需再编程修改界面,由系统根据状态字自动显示。[/quote]


就是写个转换器,前台设置绑定属性和转换器,根据输入的值自动判断需要显示的颜色
回复 点赞
fengws_sd 2019年02月10日
引用 1 楼 groveer 的回复:
ellipse元素fill属性绑定 使用后台转换器 或者简单点 根据值直接后台改变fill属性

能否具体一些?想实现数据绑定功能。后台也不需再编程修改界面,由系统根据状态字自动显示。
回复 点赞
qq14923349 2019年01月31日
mvvm模式 前后绑定
回复 点赞
groveer 2019年01月31日
ellipse元素fill属性绑定 使用后台转换器 或者简单点 根据值直接后台改变fill属性
回复 点赞
exception92 2019年01月31日
写一个判断,根据传入的数字,返回不同的Brush值,常见的使用SolidColorBrush即可。
回复 点赞
发动态
发帖子
WPF/Silverlight
创建于2007-09-28

8160

社区成员

1.1w+

社区内容

WPF/Silverlight相关讨论
社区公告
暂无公告