当前位置: 首页 > web >正文

5.2.3 WPF 中 XAML 文件 Converter 使用介绍

        Converter(转换器)在 WPF 数据绑定中扮演着重要角色,用于在源数据和目标属性之间进行值转换

        举例来说:我想用一个bool量来控制一个背景,为true时,显示红色;为false时背景用默认颜色。因此 Background="{Binding 某bool量}",这个bool量不是颜色值,怎么转换成颜色值?就需要一个继承自IValueConverter的转换器。见例子所示:

例一:bool量转换成颜色。

      注意需要先在window.Resources中把这个类引用过来。

      因为我这个转换类的命名空间就是这个定义的local中,可以直接写

 <local:BooleanToColorConverter x:Key="BooleanToColorConverter"/>

        如果命名空间不一致,则见例子2。

  最终效果如下:

<Window.Resources><local:BooleanToColorConverter x:Key="BooleanToColorConverter"/>
</Window.Resources>
<Grid><StackPanel  ><Border Height="50" Width="100" Background="{Binding BSetRed,Converter={StaticResource BooleanToColorConverter}, ConverterParameter=Red}"/><Button Content="反转颜色" Click="Button_Click"     /></StackPanel></Grid>
public class BooleanToColorConverter : IValueConverter
{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){if((bool)value){return parameter;}else{return DependencyProperty.UnsetValue;}}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){return (value == parameter);}
}
 public partial class Window1 : Window,INotifyPropertyChanged{bool bSetRed = false;public event PropertyChangedEventHandler PropertyChanged;public bool BSetRed { get => bSetRed;set { bSetRed = value;PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("BSetRed"));} }public Window1(){InitializeComponent();DataContext = this;}private void Button_Click(object sender, RoutedEventArgs e){BSetRed = !bSetRed;}}

例2:bool量转换成颜色。转换类放到其他命名空间下,比如Common.

此时因local下找不到这个类,所以报警。

此时:追加一个common的命名空间。然后程序可以正常运行。

namespace AhuiPLC_CurveRecord.Common
{public class BooleanToColorConverter : IValueConverter{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){if((bool)value){return parameter;}else{return DependencyProperty.UnsetValue;}}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){return (value == parameter);}}
}

http://www.xdnf.cn/news/1358.html

相关文章:

  • 私有知识库 Coco AI 实战(三):摄入 Elasticsearch 官方文档
  • 安装jdk报错2503、2502--右键msi文件没法管理员权限执行(Windows解决方案)
  • 栈和队列学习记录
  • 图聚类中的亲和力传播
  • 国产三维CAD皇冠CAD在机械及汽车零部件设计建模教程:斜滑动轴承
  • Python内置函数---bin()
  • 书籍推荐:《认知觉醒》一周岭
  • 单片机获取真实时间的实现方法
  • Windows 各版本查找计算机 IP 地址指南
  • 在Notepad++中使用NppAtyle插件格式化代码
  • 正则表达式的捕获组
  • 众趣科技X世界读书日丨数字孪生技术赋能图书馆空间智慧化运营
  • TCP四大特性面试回答引导
  • UniOcc:自动驾驶占用预测和预报的统一基准
  • 【华为】防火墙双击热备-之-主备模式-单外网线路
  • MYSQL-库的基本操作
  • 数据结构--AVL树
  • 【问题解决】本机navicat连接云服务器mysql
  • idea无法下载源代码
  • k8s 证书相关问题
  • Python 从PPT文档中提取图片和图片信息(坐标、宽度和高度等)
  • Linux 管道理解
  • 【计算机网络】现代网络技术核心架构与实战解析
  • OCR之身份证识别
  • MinIO 教程:从入门到Spring Boot集成
  • 极狐GitLab 的合并请求部件能干什么?
  • 数据结构-链表
  • OpenGL学习笔记(Blinn-Phong、伽马矫正、阴影)
  • UML2.0中的14种图简介,并借助AI生成UML图
  • 4.23学习总结