我有一个自定义集合,它扩展了ObservableCollection并覆盖了ToString()。 如果我将此集合绑定到TextBox的Text属性,如下所示:
<TextBox IsReadOnly="True" Text="{Binding Satellites, Mode=OneTime}"/>
其中Satellites将是此自定义集合的一个实例,文本框显示(Collection)
,而不是调用我自定义的ToString()实现。
这是预期的行为吗?
答案 0 :(得分:1)
该属性可能绑定到CollectionView
而不是直接绑定到集合。
尝试向集合类添加属性以返回要显示的文本:
public string DisplayText
{
get { return ToString(); }
}
然后绑定到该属性:
<TextBox IsReadOnly="True" Text="{Binding Satellites.DisplayText, Mode=OneTime}"/>
答案 1 :(得分:0)
也许WPF会查看绑定对象的类型,当它看到IEnumerable时,它就不会调用ToString()。
但我认为您可以通过使用转换器(假设您只想绑定该集合一次)来实现相同的结果。请看IValueConverter。