三分钟学习WPF中的值转换器

B站影视 港台电影 2025-10-13 09:39 1

摘要:在WPF中,转换器(Converter)是一种用于在数据绑定过程中转换值的机制。允许你在数据源和目标之间进行自定义的值转换。

什么是转换器

在WPF中,转换器(Converter)是一种用于在数据绑定过程中转换值的机制。允许你在数据源和目标之间进行自定义的值转换。

它有些什么用

触发时机

当控件目标值发生变化立即触发 ( 一般用作于目标控件值以及状态显示效果 )

如何使用

创建一个实体类实现转换器接口

在XAML页面上声明当并且引用目标转换器

绑定以及使用转换器

public class BoolToVisibilityConverter : IValueConverter{ public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return (bool)value ? Visibility.Visible : Visibility.Collapsed; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return (Visibility)value == Visibility.Visible; }}

使用转换器

Window.Resources> local:BoolToVisibilityConverter x:Key="BoolToVisibility"/>Window.Resources>Button Visibility="{Binding IsButtonVisible, Converter={StaticResource BoolToVisibility}}"/>

IMultiValueConverter创建并使用

创建转换器

public class MultiBindingSumConverter : IMultiValueConverter { public object Convert(object values, Type targetType, object parameter, System.Globalization.CultureInfo culture) { double sum = 0; foreach (var value in values) { if (value is double d) { sum += d; } } return sum.ToString; } public object ConvertBack(object value, Type targetTypes, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException; } }

使用转换器

Window.Resources> local:MultiBindingSumConverter x:Key="SumConverter" /> Window.Resources> TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="20"> TextBlock.Text> MultiBinding Converter="{StaticResource SumConverter}" Mode="OneWay"> Binding Path="ActualWidth" RelativeSource="{RelativeSource AncestorType=Window}" /> Binding Path="ActualHeight" RelativeSource="{RelativeSource AncestorType=Window}" /> MultiBinding> TextBlock.Text> TextBlock>

内置转换器

WPF提供了一些常用的内置转换器,位于System.Windows.Controls和System.Windows.Data命名空间中。

如:BooleanToVisibilityConverter、AlternationConverter、MenuScrollingVisibilityConverter

高级用法

通过ConverterParameter传递额外参数

双向绑定转换 :实现ConvertBack方法支持双向绑定

来源:opendotnet

相关推荐