在我的ViewModel中,我有2个属性:首先是
public ContactList ContactList
{
get { return _contacts; }
}
其中ContactList : IEnumerable<Contact>
,其次是包装
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>
至于不工作的代码 - 我刚刚在绑定中将Contacts更改为ContactList。在第二种情况下 - 转换器没有任何内容,即使没有显示绑定错误。
答案 0 :(得分:0)
由于您的ContactList继承自IEnumerable而非ObservableCollection,我很确定您遇到此问题。
答案 1 :(得分:0)
我不知道你的情况是否......但是在加载ListView之前,数据应该可用于ListView
....这样它可以填充ListView ...如果不是你应该使用INotifyPropertyChanged
这样你就可以告诉ListView我已经加载.... observable collection fires collection更改了listView的通知,所以listView相应地填充它...这应该工作
public ContactList ContactList
{
get
{
return _contacts;
}
Set
{
_contacts= value;
OnPropertyChnaged("ContactList");
}
}
Plz让我知道它是否有效......