WPFIValueConverter属性转换器⽤法⽂章⽬录
cs代码
xaml代码
前⾔
通过学习转换器实现了以下功能:当输⼊框Text为空时,显⽰为红⾊,当输⼊框Text有值时显⽰为绿⾊。
在这⾥做个笔记以防遗忘。
⼀、IValueConverter是什么?
IValueConverter可以理解为⾃定义转换器接⼝,可以把⼀种属性通过⾃定义的逻辑转换成另⼀种属性来使⽤。⼆、使⽤步骤
1.cs代码:
1. 创建⼀个类实现IValueConverter接⼝typeof的用法
2. 这⾥还实现了INotifyPropertyChanged接⼝,定义数据源Text
当输⼊框内容改变时——触发PropertyChanged事件——触发转换器⽅法Convert
别忘了绑定数据上下⽂
BorderConver BorderConver = new BorderConver();
this.DataContext = BorderConver;
代码如下:
/// <summary>
/// ⾃定义事件转换
/// </summary>
[ValueConversion(typeof(string), typeof(string))]
public class BorderConver : IValueConverter,INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _Text = string.Empty;
public string Text
{
get { return _Text; }
set
{
_Text = value;
if (this.PropertyChanged != null)
{
this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Text"));//当Text的属性值发⽣改变时,PropertyChanged事件触发
}
}
}
//当值从绑定源传播给绑定⽬标时,调⽤⽅法Convert
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string index = System.Convert.ToString(value);
if (index == "" || index == null)
return "Red";
else
return "Green";
}
//当值从绑定⽬标传播给绑定源时,调⽤此⽅法ConvertBack
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
2.xaml代码:
1. 在xaml中定义Resources(如BorderColor定义在其他命名空间下需单独将命名空间引⽤进来)
2. 将TextBox的Text与Background属性和数据源Text绑定
(UpdateSourceTrigger=PropertyChanged)指输⼊框内容⼀改变⽴马发出通知
代码如下:
<Window.Resources>
<local:BorderConver x:Key="BorderColor"></local:BorderConver>
</Window.Resources>
<Grid>
<TextBox x:Name="textBox" Background="{Binding Text,Converter={StaticResource BorderColor},Mode=OneWay}" Text="{Binding Text,UpdateSourceTrigg </Grid>
总结
欢迎交流,共勉。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论