一、单值转换器
1.不传参数
转换器 当Value值大于100时返回红色
csharp
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
选则男或女后 后台的绑定值也发生变化
csharp
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绑定多值,转换器使用数组接收
csharp
<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(' ');
}
}