绑定到ToString以外的东西:怎么样?

时间:2012-05-12 13:11:31

标签: xaml binding methods

我对ToString()命名空间中PhysicalAddress类的默认System.Net.NetworkInformation输出不满意。输出格式为“AABBCCDDEEFF”, 所以我写了一个扩展方法ToDelimitedString(),返回格式为“AA-BB-CC-DD-FF”。

到目前为止,这么好。现在我想通过使用数据绑定在我的WPF应用程序中显示它,但这是我停止的道路。我真的不知道如何绑定到对象实例上的默认ToString()以外的任何东西。

有人请指出我正确的方向,我在理解msdn文档方面遇到了很大困难。

1 个答案:

答案 0 :(得分: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()使其成为字符串...