将listview绑定到另一个类中的属性

时间:2012-07-11 16:43:10

标签: c# wpf listview binding

我有以下静态类

static class ContactSettings
{
    static ObservableCollection<Contact> _contactCollection = new ObservableCollection<Contact>();

    public static ObservableCollection<Contact> ContactCollection
    {
        get { return _contactCollection; }
    }
}

其中Contact是具有Contact.Name和Contact.Address字符串属性的类。

我想将上面的ContactCollection绑定到驻留在Window中的WPF ListView。

这是我的ListView XAML定义

<ListView x:Name="_contactListView" DataContext="{Binding Path=ContactSettings}" ItemsSource="{Binding ContactSettings.ContactCollection}">
   <ListView.View>
      <GridView>
         <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
         <GridViewColumn Header="Address" DisplayMemberBinding="{Binding Address}" />                                        
      </GridView>
   </ListView.View>
</ListView>

绑定不起作用。我很确定问题出在了 XAML中的DataContext和ItemSource属性。如果我在Window类中移动ContactCollection并将DataContext设置为Self,我可以使代码工作。问题是我不知道如何告诉ListView绑定到另一个类内的集合。谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

问题在于您无法绑定到静态类,因为绑定需要类的实例。

您可以尝试使用此SO question

之类的解决方法