WPF上位机 - 使用转换器实现TIA Wincc中的可见性和外观功能

news/2024/10/12 16:29:44

在TIA Wincc 中有这样的功能,使用True or false 控制控件的可见性或者外观的情况。

在上位机中需要使用转换器这样对True or false 值转换为 需要的笔刷或者Visible属性。

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using System.Windows.Media;namespace SiemensAxisControl.Model.Converter
{public class BoolToBrushConverter : IValueConverter{public object Convert(object value , Type targetType, object parameter, CultureInfo culture){if (value != null && bool.Parse(value.ToString())){return new SolidColorBrush(Color.FromRgb(0,255,0));}return Brushes.White;}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){throw new NotImplementedException();}}
}

还有一种情况,不是True or false 的布尔值,而是根据整形值的情况改变控件的可见性或者外观。
如在TIA中以下的情况

  • 变量值等于某一个值改变外观

  • 变量值在某一个区间内改变外观

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Data;
using System.Windows.Media;namespace SiemensAxisControl.Model.Converter
{internal class IntToBrushConverter : IValueConverter{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){// 尝试将参数解析为两个整数值,分别代表下限和上限if (parameter != null && parameter.ToString().Split('-').Length == 2 &&int.TryParse(parameter.ToString().Split('-')[0], out int lowerBound) &&int.TryParse(parameter.ToString().Split('-')[1], out int upperBound)){if(value.GetType() == typeof(short) ){// 检查传入的值是否在指定的范围内if (value is short intValue &&  intValue >= lowerBound && intValue <= upperBound){return new SolidColorBrush(Color.FromRgb(0, 255, 0)); ;}}else if (value.GetType() == typeof(int)){// 检查传入的值是否在指定的范围内if (value is int intValue && intValue >= lowerBound && intValue <= upperBound){return new SolidColorBrush(Color.FromRgb(0, 255, 0)); ;}}}// 如果不满足条件,则默认为白色return Brushes.White;}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){throw new NotImplementedException();}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/27228.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Spring AOP

AOP简介A0P(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构OOP(object Oriented Programming)面向对象编程作用:在不惊动原始设计的基础上为其进行功能增强 Spring理念:无入侵式/无侵入式AOP核心概念连接点(JoinPoint):程序执行过程…

本地化部署hoppscotch —— 使用docker compose一键部署 + https支持

一、前言 研究了好久,终于完成了hoppscotch本地一键部署,并支持https。hoppscotch的介绍这里就不做过多描述,网络上非常多,这里先放几张使用效果 1、api界面 2、管理界面 2、部署效果: a.使用脚本,./create_and_start.sh(后面会提供),需要传入本机ip(能访问到的),…

关于stm32F103ZET6移植到stm32F103C8T6的步骤

在一次代码移植过程中,突然发现代码移植后不可以使用,代码是stm32f103zet6的代码,刚好当时我使用的是C8T6的芯片我进行移植到C8T6芯片时,代码报错"Error:Flash Download failed - "Cortex_M3"这种报错。当时直接懵逼了。想了半天没有想到原因,我就在想不都…

西门子S200伺服如何清除安全配置未受保护报警提示?

1, 新建用户 2, 设置用户名和密码 及权限范围; 3, 默认用户权限限制; 断电重启即可消除报警;

Spark中的闭包引用和广播变量

闭包引用 概念所有编程语言都有闭包的概念,闭包就是在一个函数中引用了函数外的变量。Spark中,普通的变量是在Driver程序中创建的,RDD的计算是在分布式集群中的task程序上进行的。因此,当分布式算子的函数引用了外部的变量时,Driver会把该变量序列化后通过网络发送给每一个…

Godot.NET C#IOC重构(9-10):三连击,攻击框

目录前言AnimationPlayer和AnimatedSprite2D将导出属性添加到关键帧里面。状态机构建核心代码完整代码实现效果碰撞框和受攻击框全局类HitBox:攻击框HurtBox:受击框实现效果添加Player攻击总结 前言 这篇博客来深入讲解一下Godot中的AnimationPlayer AnimationPlayer和Animated…

[MDP.AspNetCore] 實作OAuth協定SSO Server/Client專案範例

團隊負責的系統變多的時候,使用SSO Server提供統一身分驗證,讓團隊只需要維護一份用戶資料及一個身分驗證服務。除了減少團隊維護成本之外,也讓使用者不用記憶多個站台的帳號密碼,提供更好的使用者體驗。 本篇文章,介紹使用MDP.AspNetCore的NuGet套件,所建立的實作OAuth協…

深入 Django 模型层:数据库设计与 ORM 实践指南

title: 深入 Django 模型层:数据库设计与 ORM 实践指南 date: 2024/5/3 18:25:33 updated: 2024/5/3 18:25:33 categories:后端开发tags:Django ORM 模型设计 数据库关系 性能优化 数据安全 查询操作 模型继承第一章:引言 Django是一个基于Python的开源Web应用程序框架,它遵…