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

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.dtcms.com/a/150780.html

相关文章:

  • 基于ACL方式手动建立站点间 IPSec 隧道
  • 牛客 verilog入门 VIP
  • 云原生后端架构:重塑后端开发的新范式
  • bert学习
  • JSON实现动态按钮管理的Python应用
  • ​​AI硬件遭遇“关税风暴“:中国科技企业如何破局?
  • Linux命令-tcpdump
  • 26.OpenCV形态学操作
  • CCF CSP 第37次(2025.03)(2_机器人饲养指南_C++)
  • UE5的 Modify Curve 蓝图节点
  • leetcode0099. 恢复二叉搜索树- medium
  • 约束constraint
  • Python删除Elasticsearch指定数据
  • 从 Vue 到 React:React.memo + useCallback 组合技
  • php 支付宝官方 Alipay Easy SDK
  • es的range失效
  • 【Docker】在Ubuntu平台上的安装部署
  • 无线监控系统分类全解析:搭配视频融合平台EasyCVR开启高效监控
  • 23种设计模式-结构型模式之组合模式(Java版本)
  • 黑马商城-微服务笔记
  • 云原生时代的双轮驱动
  • Unity 将Excel表格中的数据导入到Mysql数据表中
  • 4.23刷题记录(栈与队列专题)
  • 将输入帧上下文打包到下一个帧的预测模型中用于视频生成
  • RocketMQ 核心架构速览
  • Elasticsearch复习笔记
  • 数据集 | 苹果目标检测数据集
  • 车载功能测试-车载域控/BCM控制器测试用例开发流程【用例导出方法+优先级划分原则】
  • 如何避免AI编造虚假文献
  • CSS-跟随图片变化的背景色