綁定是指產生集合的屬性。它將在收集實例本身發生更改時生效,而不會在收集中的項目發生更改時生效。
有相當多的方式來實現你想要的行爲,其中包括:
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