网站设计的经营范围,网页设计代码居中,网页设计图片相对路径,天元建设集团有限公司鲁班奖在WPF的绑定控件操作中#xff0c;经常会通过bool值或者某些特定的string值做出相应动作。但UI层控件的很多属性对应的都不是Bool值或者对应的只是固定的String值。 这个时候有两方法解决该问题。 1.是在后台cs中做出比较判断#xff0c;然后根据相应结果传达UI层做出相应动作… 在WPF的绑定控件操作中经常会通过bool值或者某些特定的string值做出相应动作。但UI层控件的很多属性对应的都不是Bool值或者对应的只是固定的String值。 这个时候有两方法解决该问题。 1.是在后台cs中做出比较判断然后根据相应结果传达UI层做出相应动作。 2.是直接在UI界面写好然后会自行根据传入值做相应动作。 本文主要讲第二种方法。Demo在结尾会附上。 一.基类判断类代码Bool篇 public class BoolToValueConverterT : IValueConverter{public T FalseValue { get; set; }public T TrueValue { get; set; }public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture){if (value null)return FalseValue;elsereturn (bool)value ? TrueValue : FalseValue;}public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture){return value ! null ? value.Equals(TrueValue) : false;}} 新建个类继承自IValueConverter并将其继承方法名写出来Convert和ConvertBack这两个方法是逻辑判断的主要代码。Convert是将传入值做出判断和返回相应结果此处是TrueValue或FalseValue。ConverBack是将返回结果反转换回来本文并没有用到这个。 二.新建个实用类 public class BoolToBitmapImageConverter : BoolToValueConverterBitmapImage { } 该类继承BoolToValueConverterT因为Demo转换的是图片所以类型是BitmapImage。 三.UI布置 Window.Resourcesview:BoolToBitmapImageConverter x:KeyboolImgConv view:BoolToBitmapImageConverter.TrueValueBitmapImage UriSourceResource/Status-True.png //view:BoolToBitmapImageConverter.TrueValueview:BoolToBitmapImageConverter.FalseValueBitmapImage UriSourceResource/Status-False.png //view:BoolToBitmapImageConverter.FalseValue/view:BoolToBitmapImageConverter/Window.ResourcesStackPanel Width260Image Height40 Source{Binding BoToIma, Converter{StaticResource boolImgConv}} /Button ContentTrue Height100 ClickButtonTrue/Button ContentFalse Height100 ClickButtonFalse//StackPanel Source中BoToIma是绑定传入的数据然后通过转换器Converter转换转换显示结果在Key是boolImgConv中做图片绑定在Window.Resource里设置True或False的绑定图片。 四.StringToImage简单聊聊 StringToImage和BoolToImage差不多只是在Convert和ConvertBack中的逻辑判断做的相对细致些比如传入值“X”抛出值Y传入值“XX”抛出值YY传入值“XXX”抛出值YYY等等做个IF判断或者Switch判断即可。 算了贴代码说话语文不好是个硬伤。 public class StringToImageSourceConverter : StringToValueConverterImageSource { }public class StringToValueConverterT : IValueConverter{public ImageSource NormalValue { get; set; }public ImageSource CrestronErrorValue { get; set; }public ImageSource EncErrorValue { get; set; }public ImageSource AllErrorValue { get; set; }public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture){string key value null ? null : value.ToString();if (string.IsNullOrEmpty(key) || key 00){return NormalValue;}else if (key 01){return CrestronErrorValue;}else if (key 10){return EncErrorValue;}else{return AllErrorValue;}}public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture){if (value null || value.Equals(NormalValue)){return 00;}else if (value.Equals(CrestronErrorValue)){return 01;}else if (value.Equals(EncErrorValue)){return 10;}else{return 11;}}} 先定义四种状态然后做if判断。新建类继承该类完活太细致的我也不懂。。。。 UI层Windows.Resource里设置绑定属性 view:StringToImageSourceConverter x:KeystringImgConvview:StringToImageSourceConverter.NormalValueBitmapImage UriSourceResource/Status1.png //view:StringToImageSourceConverter.NormalValueview:StringToImageSourceConverter.CrestronErrorValueBitmapImage UriSourceResource/Status2.png //view:StringToImageSourceConverter.CrestronErrorValueview:StringToImageSourceConverter.EncErrorValueBitmapImage UriSourceResource/Status3.png //view:StringToImageSourceConverter.EncErrorValueview:StringToImageSourceConverter.AllErrorValueBitmapImage UriSourceResource/Status4.png //view:StringToImageSourceConverter.AllErrorValue/view:StringToImageSourceConverter 五.Demo附上 六.写的都是自己遇到的问题和见解有错欢迎纠正轻喷轻拍非常感谢转载于:https://www.cnblogs.com/Khan-Sadas/p/4950573.html