绑定是指产生集合的属性。它将在收集实例本身发生更改时生效,而不会在收集中的项目发生更改时生效。
有相当多的方式来实现你想要的行为,其中包括:
1)绑定ItemsControl
的收集和配置ItemTemplate
输出一个逗号前面的文字,如果不是在最后一个项目集合。喜欢的东西:
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemTemplate>
<TextBlock>
<TextBlock Visibility="{Binding RelativeSource={RelativeSource PreviousData}, Converter={StaticResource PreviousDataConverter}}" Text=", "/>
<TextBlock Text="{Binding .}"/>
</TextBlock>
</ItemsControl.ItemTemplate>
</ItemsControl>
2)编写代码,在代码隐藏要监视更改的收集和更新串接的项目到一个单一的string
一个单独的属性。喜欢的东西:
public ctor()
{
_items = new ObservableCollection<string>();
_items.CollectionChanged += delegate
{
UpdateDisplayString();
};
}
private void UpdateDisplayString()
{
var sb = new StringBuilder();
//do concatentation
DisplayString = sb.ToString();
}
3)自己写的ObservableCollection<T>
子类,维持类似#2一个单独的连接字符串。
我已经使用ItemsTemplate做法其实已经开始了,但代码审查过程中,我们认为这将是简单通过一个多结合转换器来完成,当观察到的集合发生变化时,认为绑定会被更新。我会恢复到该方法:)谢谢! – 2009-04-24 19:37:18