ListView ItemsSource属性绑定
本文关键字:绑定 属性 ItemsSource ListView | 更新日期: 2023-09-27 18:15:57
在我的ViewModel我有2个属性:第一个是
public ContactList ContactList
{
get { return _contacts; }
}
其中ContactList : IEnumerable<Contact>
, second只是一个包装器
public ObservableCollection<Contact> Contacts
{
get
{
return new ObservableCollection<Contact>(ContactList);
}
}
在我的视图中我有一个ListView。当我将这个ListView绑定到ContactList时-什么都没有发生,但是如果我使用Contacts属性作为ItemsSource -一切都很好。
更新:<ListView ItemsSource="{Binding Path=Contacts}">
<ListView.View>
<GridView>
<GridViewColumn Width="230">
<GridViewColumn.CellTemplate>
<DataTemplate>
<views:ContactViewer
DataContext="{Binding Converter={StaticResource ContactToViewModelConverter}}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
至于不工作的代码-我刚刚改变了联系人绑定到ContactList。在第二种情况下-没有任何转换,甚至没有绑定错误显示。
我很确定你遇到了这个问题,由于你的ContactList是从IEnumerable而不是ObservableCollection继承的。
我不知道是不是你的情况....但是数据应该在ListView加载之前提供给ListView
....这样它就可以填充ListView。如果不是你应该使用INotifyPropertyChanged
,这样你就可以告诉ListView,我加载....observable collection触发collection changed notification给listView,这样listView就会相应地填充它…这应该可以工作
public ContactList ContactList
{
get
{
return _contacts;
}
Set
{
_contacts= value;
OnPropertyChnaged("ContactList");
}
}
请让我知道它是否工作....