WPF 使用值转换器进行绑定数据的转换IValueConverter

有的时候,我们想让绑定的数据以其他的格式显示出来,或者转换成其他的类型,我们可以使用值转换器来实现.
比如我数据中保存了一个文件的路径”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:自动更新"

为了使用的更方便,我们在Resources集合中创建一个转换器对象

<Window.Resources>
    <local:GetFileName x:Key="GetFileName"></local:GetFileName>
</Window.Resources>

现在我们去绑定数据的地方使用StaticResource来指向转换器

<TextBlock>
    <TextBlock.Text>
        <Binding Path="FileName">
            <Binding.Converter>
                <local:GetFileName></local:GetFileName>
            </Binding.Converter>
        </Binding>
    </TextBlock.Text>
</TextBlock>


俺的独立博客: 沙发和茶几

你可能感兴趣的:(WPF 使用值转换器进行绑定数据的转换IValueConverter)