【问题标题】:How add multiple classes to an Observable Collection如何向 Observable Collection 添加多个类
【发布时间】:2012-01-31 12:35:55
【问题描述】:

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

例如:

       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

【问题讨论】:

    标签: wpf vb.net observablecollection


    【解决方案1】:

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

    ItemsSource="{Binding Path=Animals}"
    

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

    此外,虽然页面有一个 DataContext,但其中的所有内容也都有一个 DataContext,因此您可以单独绑定它们 - 否则它们只会从其父级继承 DataContext。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-31
        • 1970-01-01
        • 2016-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-02
        相关资源
        最近更新 更多