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特性不是必需的,但是易读容易理解,有两个参数,第一个是源类型,第二个是目标类型