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 回答