2011-07-26 7 views
1

내가 클래스 항목에서 채워진의 DataContext 속성을 가진 목록 상자가WPF : DataBinding 속성을 연결할 수 있습니까?

내가 같은 다른 클래스 항목에서이 DataContext에 "연결할"필요
lb.DataContext= myViewModel.sessions; 

: naturelly 작동하지 않습니다

lb.DataContext+=myViewModel2.sessions; 

을 . 기존 DataContext에 항목을 추가하는 방법이 있습니까?

+0

왜 myViewModel.sessions에 추가했는지 자동으로 반영됩니다. 그것의 ObservableCollection 경우 훨씬 더 나은 컬렉션을 바랍니다. – anivas

답변

1

ViewModel에서 두 컬렉션의 연결 인 다른 컬렉션을 만들고 그 컬렉션에 바인딩하기 만하면됩니다. 간단한 예를 들어

, 여기 부분의 ViewModel (나는의 int를 사용 있습니다,하지만 당신은 무엇이든 당신의 세션 객체를 대체해야합니다)입니다 : 가정, 다음

private List<int> sessionList1 = new List<int>(); 
private List<int> sessionList2 = new List<int>(); 

public MyViewModel() 
{ 
    for (int i = 0; i < 10; i++) 
     sessionList1.Add(i); 
    for (int i = 10; i < 20; i++) 
     sessionList2.Add(i); 
} 

public ReadOnlyObservableCollection<int> AllSessions 
{ 
    get 
    { 
     ObservableCollection<int> combinedList = 
      new ObservableCollection<int>(sessionList1.Concat(sessionList2)); 
     return new ReadOnlyObservableCollection<int>(combinedList); 
    } 
} 

와 그의 DataContext에 내보기는 MyViewModel에 바인딩 :

 <ListBox ItemsSource="{Binding AllSessions}" /> 

당신은 (즉, 아마 하나 ObservableCollection에 또는 ReadOnlyObservableCollection) 돌아올 권리 수집을 마련 할 필요가, 당신이 적절하게 세션을 연결해야하지만이 가야 너 간다.

관련 문제