将TextBox.Text绑定到自定义集合不会显示自定义ToString()

时间:2012-11-21 13:58:40

标签: wpf binding collections textbox

我有一个自定义集合,它扩展了ObservableCollection并覆盖了ToString()。 如果我将此集合绑定到TextBox的Text属性,如下所示:

  <TextBox IsReadOnly="True" Text="{Binding Satellites, Mode=OneTime}"/>

其中Satellites将是此自定义集合的一个实例,文本框显示(Collection),而不是调用我自定义的ToString()实现。

这是预期的行为吗?

2 个答案:

答案 0 :(得分:1)

该属性可能绑定到CollectionView而不是直接绑定到集合。

尝试向集合类添加属性以返回要显示的文本:

public string DisplayText
{
   get { return ToString(); }
}

然后绑定到该属性:

<TextBox IsReadOnly="True" Text="{Binding Satellites.DisplayText, Mode=OneTime}"/>

答案 1 :(得分:0)

也许WPF会查看绑定对象的类型,当它看到IEnumerable时,它就不会调用ToString()。

但我认为您可以通过使用转换器(假设您只想绑定该集合一次)来实现相同的结果。请看IValueConverter