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