首页 > 代码库 > WPF MultiBinding 和 IMultiValueConverter
WPF MultiBinding 和 IMultiValueConverter
MultiBinding,描述附加到单个绑定目标属性的Binding对象的集合。可以指定多个数值绑定。
IMultiValueConverter通过转换器使用MultiBingding对象,该对象讲根据这些绑定的值转换生成绑定目标的最终值(效果)。
可以看一下微软给出的案例:
1 public class NameConverter : IMultiValueConverter 2 { 3 public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 4 { 5 string name; 6 7 switch ((string)parameter) 8 { 9 case "FormatLastFirst":10 name = values[1] + ", " + values[0];11 break;12 case "FormatNormal":13 default:14 name = values[0] + " " + values[1];15 break;16 }17 18 return name;19 }20 21 public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)22 {23 string[] splitValues = ((string)value).Split(‘ ‘);24 return splitValues;25 }26 }
在资源中定义引用转换
1 <c:NameConverter x:Key="myNameConverter"/>
1 <TextBlock Name="textBox2" DataContext="{StaticResource NameListData}">2 <TextBlock.Text>3 <MultiBinding Converter="{StaticResource myNameConverter}"4 ConverterParameter="FormatLastFirst">5 <Binding Path="FirstName"/>6 <Binding Path="LastName"/>7 </MultiBinding>8 </TextBlock.Text>9 </TextBlock>
Orlando Bloom Bloom, Orlando
亦或者 如果股票买卖数据中需要定义红涨绿跌,则会对比昨收价对比实时价格
1 public class QDataColorConvert : IMultiValueConverter 2 { 3 /// 需传入一组对象,(基础值 比对值) 4 public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) 5 { 6 double proNum = Math.Round((double)values[1], 2);//目前实时阶段性价格 7 double basepronum = Math.Round((double)values[0], 2);//昨收价格 8 9 if (proNum > basepronum)10 {11 return new SolidColorBrush(Color.FromArgb(255, 255, 96, 96));12 }13 else if (proNum < basepronum)14 {15 return new SolidColorBrush(Color.FromArgb(255, 83, 187, 108));16 }17 return new SolidColorBrush(Color.FromArgb(255, 227, 227, 227));18 }19 20 public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)21 {22 throw new NotImplementedException();23 }24 }
如何使用呢?
1 <C:QDataColorConvert x:Key="Qdataconverter"/> 2 3 <TextBlock Text="{Binding Path=Newprice}"> 4 <TextBlock.Foreground> 5 <MultiBinding Converter="{StaticResource Qdataconverter}"> 6 <Binding Path="Baseprice"/> 7 <Binding Path="Newprice"/> 8 </MultiBinding> 9 </TextBlock.Foreground>10</TextBlock>
Baseprice;Newprice就是数据模型中的实时数据(依赖属性),这样就可以做对比。
当然 这里的Binding 与IValueConverter这里就只用到当个数据绑定,单个对应值转换。
这个就是介绍的WPF的MultiBinding 和 IMultiValueConverter的简短文字
希望和大家多多的交流沟通,共同进步。 谢谢!
WPF MultiBinding 和 IMultiValueConverter
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。