wpf converter

现在有类似需求:根据textbox字符串是否为空,设置按钮是否可见
首先定义转换类

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
using System.Threading.Tasks;  
using System.Windows.Data;  
  
namespace ValueConverters  
{  
   public class ValueConverter:IValueConverter  
    {  
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)  
        {  
            bool isenable = true;  
            if (string.IsNullOrEmpty(value.ToString()))  
            {  
               isenable = false;  
            }  
            return isenable;  
        }  
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)  
        {  
            throw new NotImplementedException();  
        }  
    }  
}  

根据textbox值设置CheckBox是否选中

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
using System.Threading.Tasks;  
using System.Windows.Data;  
  
namespace ValueConverters  
{  
    class CheckBoxCheckConverter:IValueConverter  
    {  
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)  
        {  
            if (value.ToString().ToUpper() == "MARRIED")  
            {  
                return true;  
            }  
            else  
            {  
                return false;  
            }  
        }  
  
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)  
        {  
            bool married = System.Convert.ToBoolean(value);  
            if (married == true)  
                return "Married";  
            else  
                return "Unmarried";  
        }  
    }  
}  

main窗体 xaml文件设置

<Window x:Class="ValueConverters.MainWindow"  
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
        xmlns:local="clr-namespace:ValueConverters"  
        Title="MainWindow" Height="350" Width="525">  
    <Window.Resources>  
        <local:ValueConverter x:Key="valueconverter"></local:ValueConverter>  
        <local:CheckBoxCheckConverter x:Key="checkBoxCheckConverter"></local:CheckBoxCheckConverter>  
    </Window.Resources>  
    <Grid>  
        <TextBlock Text="Value Converter Exampkle" HorizontalAlignment="Stretch" VerticalAlignment="Top" TextAlignment="Center"></TextBlock>  
        <TextBox Name="txtFirstName" HorizontalAlignment="Left" VerticalAlignment="Top" Height="36" Width="255" Margin="136,38,0,0" ></TextBox>  
        <Button Content="Click" HorizontalAlignment="Left" VerticalAlignment="Top" Height="23" Width="50" Margin="230,101,0,0" IsEnabled="{Binding Path=Text, ElementName=txtFirstName,Converter={StaticResource valueconverter}}"></Button>  
        <CheckBox Content="Married" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="307,108,0,0" IsChecked="{Binding Path=Text, ElementName=txtFirstName,Converter={StaticResource checkBoxCheckConverter}}"></CheckBox>  
        <TextBlock Text="MultiValue Converter Exampkle" HorizontalAlignment="Stretch" VerticalAlignment="Top" TextAlignment="Center" Margin="10,146,-10,0"></TextBlock>  
    </Grid>  
</Window>  
WPF绑定转换器(Binding Converter)是一种用于在数据绑定过程中进行数据转换的功能。在WPF中,我们可以使用数据绑定来将数据源(如属性、集合等)与UI元素(如控件属性、集合等)进行关联。而绑定转换器则可以在将数据源的数据传递给UI元素之前,对数据进行一些转换操作。 绑定转换器通常实现了IValueConverter接口,该接口定义了两个方法:Convert和ConvertBack。Convert方法用于将数据源的值转换为目标类型的值,而ConvertBack方法则用于将目标类型的值转换回数据源类型的值。在进行数据绑定时,我们可以通过指定绑定转换器来对数据进行适当的转换。 使用绑定转换器有助于实现更灵活的数据绑定操作。例如,我们可以使用绑定转换器将数据源的布尔值转换为可见性类型,以便控制UI元素的可见性。或者,我们可以使用绑定转换器将数据源的时间戳转换为可读的日期时间格式。还可以使用绑定转换器将数据源的枚举值转换为对应的文本描述。 要使用绑定转换器,我们首先需要实现一个继承自IValueConverter接口的类。然后,在XAML中定义该绑定转换器,并在相应的数据绑定中指定使用该转换器。可以通过绑定转换器的Converter属性来实现。 总而言之,WPF绑定转换器是一种在数据绑定过程中进行数据转换的机制。它允许我们灵活地对数据进行适当的转换,以满足UI元素与数据源之间的差异。通过使用绑定转换器,我们可以更加简单而且高效地处理数据绑定相关的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值