ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

wpf之数据类型转换

2026/8/22 14:40:54 拓冰建站 浏览量
wpf之数据类型转换 前言wpf中经常有这种需求比如内存中存在一个Bool类型的变量界面有个控件的背景色由内存中bool变量来控制当变量为true时界面为绿色当变量为false时界面为空色这时直接使用数据绑定是不可行的比如将界面控件的background属性和内存中的bool变量直接绑定这是不行的所以需要数据转换作为桥梁。1、数据转换实现主要是通过实现IValueConverter接口来实现该接口中存在Convert和ConvertBack两个方法Convert 负责把绑定源的值转换成绑定目标的值ConvertBack 负责把绑定目标的值转换回绑定源的值publicclassBoolToColorConverter:IValueConverter{publicobjectConvert(objectvalue,TypetargetType,objectparameter,CultureInfoculture){if(valueisbool){SolidColorBrushbgBrush((bool)value)?newSolidColorBrush((Color)ColorConverter.ConvertFromString(GREEN)):newSolidColorBrush((Color)ColorConverter.ConvertFromString(RED));returnbgBrush;}else{returnnewSolidColorBrush((Color)ColorConverter.ConvertFromString(RED));}}publicobjectConvertBack(objectvalue,TypetargetType,objectparameter,CultureInfoculture){if(valueisSolidColorBrush){SolidColorBrushbrushvalueasSolidColorBrush;if(brush.ColorColors.Green){returntrue;}else{returnfalse;}}else{returnnull;}}}然后通过下面的代码将这个类转变为可通过key引用的资源。Window.Resourceslocal:BoolToColorConverterx:KeyBoolToColor//Window.Resources最后看下面的代码中Button的Background属性和CheckBox 的IsChecked属性绑定Converter{StaticResource BoolToColor}指定使用什么转换。Windowx:Classwpf之转换器.MainWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:dhttp://schemas.microsoft.com/expression/blend/2008xmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006xmlns:localclr-namespace:wpf之转换器mc:IgnorabledTitleMainWindowHeight450Width800Window.Resourceslocal:BoolToColorConverterx:KeyBoolToColor//Window.ResourcesGridStackPanelOrientationVerticalCheckBoxHeight50x:Namecheck_test/ButtonHeight 100Background{Binding IsChecked,ElementNamecheck_test ,Converter{StaticResource BoolToColor}}//StackPanel/Grid/Window1当你选中CheckBox时Button背景色变为绿色2当你取消选中CheckBox时Button背景色变为红色选中或者取消选中实际上调用的是Convert方法将bool类型转为为颜色。马工撰写的年入30万C#上位机项目实战必备教程点击下方链接即可访问文章目录1、《C#串口通信从入门到精通》2、《C#与PLC通信从入门到精通 》3、《C# Modbus通信从入门到精通》4、《C#Socket通信从入门到精通 》5、《C# MES通信从入门到精通》6、《winform控件从入门到精通》7、《C#操作MySql数据库从入门到精通》