我有一个完整的自定义对象列表。
我想要做的是填写一个usercontrols的包装面板,它是列表中每个对象的单独控件。
问题是:
该列表可以由另一个线程编辑,我该如何设置,以便在可见的用户控件中自动描述对列表的任何更改?
谢谢
答案 0 :(得分:2)
只需将ObservableCollection
绑定到ItemsSource
ListView
即可保留您的对象并设计所需的DataTemplate
以显示objects
的部分。确定你实现了INotifyPropertyChanged
接口。
<ListView ItemsSource="{Binding FriendList}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled" >
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel></WrapPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListView>
答案 1 :(得分:0)
您可以绑定ListView的ItemsSource并定义ItemsPanel
<!-- MyControlsList is of type ObservableCollection -->
<ListView ItemsSource="{Binding MyControlsList}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel></WrapPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
在视图模型中,您应该实现INotifyPropertyChanged接口并将ObservableCollection订阅到CollectionChanged事件。然后,只要您的集合发生更改,就可以引发PropertyChanged事件。
void MyControlsList_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
OnPropertyChanged("MyControlsList");
}