如何在DataBinding StringFormat中格式化文本(而不是数字或日期)?

时间:2014-07-29 16:39:47

标签: .net wpf data-binding string-formatting

我有一个文本代码,比方说" NT0040E53",必须显示为" NT.0040.E5-3"。 我知道对于数字数据我们可以做...

"{Binding Path=MyCode, StringFormat={0:#,#.0}}" 

然后,对于文本,我希望写一些像......

"{Binding Path=MyCode, StringFormat={0:@@.@@@@.@@-@}}" 

但就我所调查而言,这并不存在。 那么,如何使用数据绑定StringFormat?

使用插入字符格式化文本

1 个答案:

答案 0 :(得分:3)

嗨,你需要使用Rohit Vats所说的转换器。

的Xaml:

<Window....>
    <Window.Resources>
        <local:TestConverter x:Key="TestConverter"/>
    <Window.Resources>
    ....
    <TextBlock Text="{Binding MyCode, Converter={StaticResource TestConverter}, ConverterParameter='0:#,#.0'}"></TextBlock>

TestConverter.cs

public class TestConverter : IValueConverter
{
    // converts your bound data value = binding, parameter = ConverterParameter
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        String str = value != null ? value.ToString() : String.Empty;
        String param = parameter != null ? parameter.ToString() : null;            
        return !String.IsNullOrEmpty(str) ? WhatEverYouWantToDoHere(param) : String.Empty;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        // Required if you need to convert back.... 
        throw new NotImplementedException();
    }
}

转换器在WPF / SL中有点岩石:)

希望它有所帮助!

干杯,

了Stian