首页 > 代码库 > WPF中使用ValueConverter来实现“范围条件触发器”
WPF中使用ValueConverter来实现“范围条件触发器”
在WPF中,我们知道界面层可以通过Trigger触发器实现“条件”——“赋值”的功能
属性触发器Property Trigger:当Dependency Property的值发生改变时触发。
数据触发器Data Trigger: 当普通.NET属性的值发生改变时触发。
事件触发器Event Trigger: 当路由时间被触发时调用。
属性触发器与数据触发器中又可有多条件触发器,即类似条件语句中“并”的效果
但发现触发器的应用场景,“条件”的限制都是“等于”,即变量在某个特定的值触发某个“赋值”
要是想达到“大于”“小于”这种范围条件,Trigger似乎不适合
项目中很简单也很常见的一个需求,某个数据小于等于0的时候,隐藏它或显示空白
尝试采用了ValueConverter来实现,原理也很简单,即在自定义的ValueConverter类中,自己可以指定“数据处理过程”
这个数据处理过程,可以是简单的根据特定数值转换,例如1转换为“星期一”,2转换为“星期二”
也可以是一个条件判断,或者业务判断,例如上面提到的,原始数据小于等于0时,则转换为string.empty
甚至可以是复杂的业务逻辑转换
这样即可以实现一个“范围条件触发器”的作用
界面代码
<TextBlock Text="{Binding Path=MyData,Converter={StaticResource dataConverter}}"/>
界面Resource声明
<local:DataConverter x:Key="dataConvert"/>
ValueConverter类代码
[ValueConversion(typeof(string),typeof(string))]public class DataConverter:IValueConverter{public object Convert(object value,Type targetType,object parameter,System.Globalization.CultureInfo culture){int tempValue=http://www.mamicode.com/0;int.TryParse((string)value,out tempValue);if(tempValue<=0){return string.empty;}else{return (string)value;}}public object ConvertBack(object value,Type targetType,object parameter,System.Globalization.CultureInfo culture){return (string)value;}}
WPF中使用ValueConverter来实现“范围条件触发器”
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。