如何将多个类添加到Observable Collection

时间:2012-01-30 16:42:20

标签: wpf vb.net observablecollection

我还在教自己如何绑定和使用可观察的集合。我有点困惑的一个问题是将多个类/可观察集合绑定到一个页面。换句话说,如果我有一个PersonName类和一个AnimalName类,我必须为每个创建两个单独的observalbe集合?当页面只允许一个时,我如何设置datacontext?

例如:

       Public Class NameList
Inherits ObservableCollection(Of PersonName)

' Methods
Public Sub New()
    MyBase.Add(New PersonName("Willa", "Cather"))
    MyBase.Add(New PersonName("Isak", "Dinesen"))
    MyBase.Add(New PersonName("Victor", "Hugo"))
    MyBase.Add(New PersonName("Jules", "Verne"))
End Sub

End Class

Public Class PersonName
' Methods
Public Sub New(ByVal first As String, ByVal last As String)
    Me._firstName = first
    Me._lastName = last
End Sub


' Properties
Public Property FirstName() As String
    Get
        Return Me._firstName
    End Get
    Set(ByVal value As String)
        Me._firstName = value
    End Set
End Property

Public Property LastName() As String
    Get
        Return Me._lastName
    End Get
    Set(ByVal value As String)
        Me._lastName = value
    End Set
End Property


' Fields
Private _firstName As String
Private _lastName As String
 End Class

现在如果我添加另一个类,我将如何在绑定部分和集合部分上组合这两个类。感谢您的任何建议:)

public class AnimalName 
  'properties, ect...ect..ect..
End class

2 个答案:

答案 0 :(得分:1)

您应该将各个列表控件的ItemSource设置为单独的ObservableCollections。

答案 1 :(得分:1)

您需要将您设置为DataContext的对象设置为另一个包含人员集合和动物集合的类。然后,显示列表的控件可以将其ItemsSource属性绑定到DataContext中的相关属性,例如

ItemsSource="{Binding Path=Animals}"

你不能将它们都添加到同一个集合中,除非它们是从它们派生的某种类型的集合(最终所有内容都来自Object),但是你必须处理如何在UI中适当地呈现它们。

虽然页面有一个DataContext,但它内部的所有内容都有一个DataContext,所以你可以单独绑定它们 - 否则它们只是从它们的父级继承DataContext。