2012-01-30 9 views
1

나는 관찰 가능한 컬렉션을 바인딩하고 사용하는 방법을 여전히 가르쳐왔다. 약간 혼란스러운 문제는 여러 클래스/관찰 가능한 컬렉션을 한 페이지에 바인딩하는 것입니다. 즉, PersonName 클래스와 AnimalName 클래스가있는 경우 각각에 대해 두 개의 별도 observalbe 컬렉션을 만들어야합니다. 페이지에서 하나만 허용하는 경우 어떻게 datacontext를 설정합니까? 예를 들어Observable 컬렉션에 여러 클래스를 추가하는 방법

: 나는 다른 클래스를 추가하는 경우

 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 

답변

1

당신은 DataContext로 설정 한 객체를 사람 모음과 동물 모음이 들어있는 다른 클래스로 만들 필요가 있습니다. 그것이 어떤 종류의 모음 않는 한 다음과 같은

ItemsSource="{Binding Path=Animals}" 

같은 목록이의 DataContext의 관련 속성에 자신의 ItemsSource 속성을 바인딩 할 수 표시 당신의 컨트롤은 동일한 컬렉션에 모두 추가 할 수 없습니다 그 둘 (궁극적으로 모든 것은 Object에서 파생됩니다.)하지만 UI에서 적절하게 렌더링하는 방법을 처리해야합니다.

페이지에 DataContext가 있지만 그 안에있는 모든 항목에 DataContext도 있으므로 개별적으로 바인딩 할 수 있습니다. 그렇지 않으면 부모로부터 DataContext를 상속합니다.

1

당신은 개별 목록의 ItemSource의 설정해야이 ObservableCollections를 분리 제어합니다.

관련 문제