WPF-数据转换器

一、单值转换器

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(' ');
    }
}
相关推荐
小羊没烦恼!3 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
神仙别闹3 天前
基于C#+MySQL实现(WinForm)个人聊天室软件
c#
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
kybs19913 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
孙启超3 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int3 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
CoderYanger3 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法