2012-05-12 63 views
0

我對System.Net.NetworkInformation命名空間中的PhysicalAddress類的輸出的默認ToString()輸出不是很滿意。輸出格式爲「AABBCCDDEEFF」, ,所以我寫了一個擴展方法ToDelimitedString(),它返回格式如「AA-BB-CC-DD-FF」。綁定到ToString以外的東西:怎麼樣?

到目前爲止,這麼好。現在我想通過使用數據綁定在我的WPF應用程序中顯示它,但這是我停下來的路。我真的不知道如何綁定除對象實例上的默認ToString()以外的其他任何東西。

有人請指出我正確的方向,我有很難理解msdn文檔。

回答

0

在這種情況下,最簡單的方法可能是寫一個轉換器:

public class PhysicalAdressConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     var address = value as PhysicalAddress; 
     if (address != null) 
      return address.ToDelimitedString(); 
     return value; 
    } 

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

而在你結合PhysicalAddress

如果你使用MVVM模式指定此轉換器,你可以還創建執行格式化和綁定到該屬性的屬性:

public string FormattedPhysicalAddress 
{ 
    get { return this.PhysicalAddress.ToDelimitedString(); } 
} 

順便說一句,結合不結合到ToString()方法你似乎假設。它綁定到值本身,但如果目標類型是string,然後它叫ToString()使它成爲一個字符串...

+0

偉大的東西!感謝您解決困惑。讓我試試這個。 –

+0

我採用了IValueConverter方法(儘管我嘗試使用MVVM)並且它可以很好地工作。 :) 我可以問一下,在哪裏適合實施ConvertBack?我想不出任何用例。如果您需要原始值,您只需從源代碼中直接獲取它,對嗎? –

+0

@StevenDotNet,ConvertBack僅用於雙向綁定。它將來自控件的值轉換回DataContext屬性 –

相關問題