2010-01-05 102 views

回答

13

您可以使用值转换器返回一个字符串前缀:

class PrefixValueConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     string s = value.ToString(); 
     int prefixLength; 
     if (!int.TryParse(parameter.ToString(), out prefixLength) || 
      s.Length <= prefixLength) 
     { 
      return s; 
     } 
     return s.Substring(0, prefixLength); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotSupportedException(); 
    } 
} 

并且在XAML中:

<Window.Resources> 
    ... 
    <local:PrefixValueConverter x:Key="PrefixValueConverter"/> 
</Window.Resources> 
... 
...{Binding Path=TheProperty, Converter={StaticResource PrefixValueConverter}, 
           ConverterParameter=1}... 
+1

而不是在ConvertBack中抛出'NotImplementedException',抛出'NotSupportedException'。 NIE用于尚未实施但即将推出的代码。这里:http://stackoverflow.com/questions/410719/notimplementedexception-are-they-kidding-me – 2010-01-05 13:15:34

+0

TBH,它实际上还没有实施,采取您的建议,它现在是:) – 2010-01-05 13:43:41

+0

是的..谢谢Aviad,实际上我正在寻找避免使用converter.But似乎没有办法... thx – biju 2010-01-07 18:25:47