2013-06-20 76 views
2

是否有可能使用的StringFormat格式化字符串...WPF的StringFormat格式化字符串值

例如..我的模型:

的代碼
public class MyModel 
{ 
     public string Code { get; set; } 
} 

可能的值是: '00000101001',「00000201001 」等等......

當綁定,我倒是想表明: 爲 '00000101001' - > '000001-01'(忽略最後3個字符) 爲 '00000201001' - > '000002-01' (忽略最後3個字符)

如果它可能使用stringformat來實現這一點,將是很好,而不得不由我自己來實現。

回答

2

您提出的問題有關BINDING WPF中的字符串(不改變字符串的內部內容),並且在解決此問題的首選策略之間使用轉換器,這裏是一個示例,對(只顯示前10個字符)...

public class CodeConverter : MarkupExtension, IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, 
        System.Globalization.CultureInfo culture) 
    { 
     try 
     { 
      string result = value.ToString(); 
      if (result.Length > 10) 
      { 
       // code in your exact requirements here... 
       return result.Substring(0, 10); 
      } 
      return result; 
     } 
     catch{} 
     return value; 
    } 
    public object ConvertBack(object value, Type targetType, object parameter,  
        System.Globalization.CultureInfo culture) 
    { 
     return null; 
    } 
    public override object ProvideValue(IServiceProvider serviceProvider) 
    { 
     return this; 
    } 
} 

在XAML中,只需在你的綁定指定這個類...

{Binding Code, Converter={StaticResource CodeConverter} 

,你是好去!

0

只需使用轉換功能。 E.g:

public static string Convert(string raw) 
{ 
    return raw.Substring(0,6)+"-"+raw.Substring(6,2); 
} 

Console.WriteLine (Convert("00000201001")); 

//output= 000002-01 
+0

這個想法很好,但在這種情況下,我必須在我的模型中創建一個新屬性,使用轉換器,我認爲在這種情況下效果更好,因爲它只會在視圖中顯示時轉換。韓國社交協會。 – will

0

可以做這樣的事情:

return (Int64.Parse("00000101001")/1000).ToString("000000-00"); 

問候。