0

名前空間のPhysicalAddressクラスToString()からのデフォルトの出力にはあまり満足できませんでした。出力は「AABBCCDDEEFF」のような形式なので、「AA-BB-CC-DD-FF」のような形式で返す拡張メソッドを書きました。System.Net.NetworkInformationToDelimitedString()

ここまでは順調ですね。ここで、データバインディングを使用してこれを WPF アプリケーションに表示したいと考えていますが、ここで道が止まります。ToString()オブジェクトインスタンスのデフォルト以外にバインドする方法がよくわかりません。

誰かが私を正しい方向に向けてください.msdnのドキュメントを理解するのが非常に困難です。

4

1 に答える 1

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()て文字列にします...

于 2012-05-12T13:36:30.377 に答える