有的时候,我们想让绑定的数据以其他的格式显示出来,或者转换成其他的类型,我们可以使用值转换器来实现.
比如我数据中保存了一个文件的路径”c:\abc\abc.exe”,但是我想让他在前台列表中显示为”abc.exe”.
首先我们先建一个IvalueConverter接口的类.
class GetFileName : IValueConverter { //Convert方法用来将数据转换成我们想要的显示的格式 public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { FileInfo fi = new FileInfo((string)value); return fi.Name; } //ConvertBack方法将显示值转换成原来的格式,因为我不需要反向转换,所以直接抛出个异常 public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } }
为了使用这个转换器,我们要将项目的名称空间映射到xaml中,比如我项目名字为自动更新,用local作为空间名称前缀
xmlns:local="clr-namespace:自动更新"
<Window.Resources> <local:GetFileName x:Key="GetFileName"></local:GetFileName> </Window.Resources>
<TextBlock> <TextBlock.Text> <Binding Path="FileName"> <Binding.Converter> <local:GetFileName></local:GetFileName> </Binding.Converter> </Binding> </TextBlock.Text> </TextBlock>
俺的独立博客: 沙发和茶几