我还在教自己如何绑定和使用可观察的集合。我有点困惑的一个问题是将多个类/可观察集合绑定到一个页面。换句话说,如果我有一个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
答案 0 :(得分:1)
您应该将各个列表控件的ItemSource
设置为单独的ObservableCollections。
答案 1 :(得分:1)
您需要将您设置为DataContext的对象设置为另一个包含人员集合和动物集合的类。然后,显示列表的控件可以将其ItemsSource属性绑定到DataContext中的相关属性,例如
ItemsSource="{Binding Path=Animals}"
你不能将它们都添加到同一个集合中,除非它们是从它们派生的某种类型的集合(最终所有内容都来自Object),但是你必须处理如何在UI中适当地呈现它们。
虽然页面有一个DataContext,但它内部的所有内容都有一个DataContext,所以你可以单独绑定它们 - 否则它们只是从它们的父级继承DataContext。