WPF-数据转换器
- 互联网
- 2025-09-08 07:18:02

一、单值转换器 1.不传参数
转换器 当Value值大于100时返回红色
public class DataConverter : IValueConverter { /// <summary> /// 表示从源到目标数据转换 /// </summary> /// <param name="value">数据源的值</param> /// <param name="targetType">目标类型 根据目标类型进行不同转换</param> /// <param name="parameter">参数</param> /// <param name="culture">本地国际化时使用</param> /// <returns></returns> public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (int.Parse(value.ToString()) > 100) return Brushes.Red; return Brushes.Black; } /// <summary> /// 表示从目标到源头的数据转换 /// </summary> /// <param name="value"></param> /// <param name="targetType"></param> /// <param name="parameter"></param> /// <param name="culture"></param> /// <returns></returns> public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } 2.传参数Parameter选则男或女后 后台的绑定值也发生变化
public class GenderConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { //第一次 男标签触发 value=1 p=1 //第二次 女标签触发 value=2 p=2 if (value.ToString() == parameter.ToString()) return true; return false; } //值返回的处理 public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return parameter; } } 二、多值转换器使用MultiBinding绑定多值,转换器使用数组接收
<Window.Resources> <local:TextMulti x:Key="TextMulti"/> </Window.Resources> <Grid> <TextBox x:Name="tex1"/> <TextBox x:Name="tex2"/> <TextBox x:Name="tex3"/> <TextBox x:Name="tex4"> <TextBox.Text> <MultiBinding Converter="{StaticResource TextMulti}"> <Binding ElementName="tex1" Path="Text" Mode="TwoWay"/> <Binding ElementName="tex2" Path="Text" Mode="TwoWay"/> <Binding ElementName="tex3" Path="Text" Mode="TwoWay"/> </MultiBinding> </TextBox.Text> </TextBox> </Grid> public class TextMulti:IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return values[0] + " " + values[1] + " " + values[2]; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) { return value.ToString().Split(' '); } }