WPF 值转换器

来源:互联网 发布:我的购物车淘宝网登录 编辑:程序博客网 时间:2024/06/06 00:45


1、举例

<Window x:Class="WpfApplication1.com.view.TestWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApplication1.com.Data"        Title="测试窗口" Height="300" Width="500">    <Window.Resources>        <local:StringToStringConvert x:Key="stringToStringConvert"/>    </Window.Resources>    <Grid>                <StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Orientation="Horizontal">            <Label Content="姓名:"/>            <Label Content="{Binding StudentName,Converter={StaticResource stringToStringConvert}}"/>        </StackPanel>            </Grid></Window>

using System.Windows;using WpfApplication1.com.Data;namespace WpfApplication1.com.view{    /// <summary>    /// TestWindow.xaml 的交互逻辑    /// </summary>    public partial class TestWindow : Window    {        public TestWindow()        {            InitializeComponent();            StudentData stuData = new StudentData();            stuData.StudentID = 100;            stuData.StudentName = "小明";            this.DataContext = stuData;        }    }}
using System;using System.Globalization;using System.Windows.Data;namespace WpfApplication1.com.Data{    [ValueConversion(typeof(string),typeof(string))]    public class StringToStringConvert : IValueConverter    {        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)        {            string str = System.Convert.ToString(value);            if (str != "")                return "你好";            return "";        }        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)        {            throw new NotImplementedException();//不用的话可以不做处理        }    }}


此代码中的StudentData数据类是实现了INotifyPropertyChanged接口的数据类,

值转换器需要实现IValueConverter接口

Convert函数:将某个值转换为目标类型

ConvertBack方法与其相反

ValueConversion特性不是必需的,但是易读容易理解,有两个参数,第一个是源类型,第二个是目标类型