我有一个ListBox,它包含一组对象(通过ItemsSource绑定到ObservableCollection)。我还没有使用动态绑定。它目前使用对象的ToString()
方法。 ToString()方法以这种方式显示字符串:name (someOtherProperty)
然而,即使实现了INotifyPropertyChanged并且我使用了ObservableCollection ,如果我更改了item属性,则此字符串将不会更新。
我认为这是因为它只调用ToString
一次。相反,我想我必须使用数据绑定但如何我可以用它形成这样的字符串? << name(someOtherProperty)>>
感谢。
答案 0 :(得分:3)
您可以使用多重绑定,例如像这样的东西:
<MultiBinding StringFormat="{}{0} ({1})">
<Binding Path="name"/>
<Binding Path="someOtherProperty"/>
</MultiBinding>
如果您只是让它执行ToString,则根本没有正确的绑定,任何通知都不起作用。
你这样使用它:
<ListBox ...>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<!-- The above binding here -->
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>