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。在第二种情况下-没有任何转换,甚至没有绑定错误显示。

ListView ItemsSource属性绑定

我很确定你遇到了这个问题,由于你的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");
              }    
     }

请让我知道它是否工作....