각 뷰 모델에 관찰 가능 콜렉션이있는 두 개의 뷰 모델이 있습니다. 이 컬렉션에는 서로 관계가 있습니다. 예를 들어, 하나는 ID와 이름을 가진 ClassA의 컬렉션이고, 다른 하나는 ClassAId와 일부 OtherValue가있는 ClassB의 컬렉션입니다. CollectionA의 각 항목에 대해 ListAut로 데이터 바인딩 할 수 있습니까? OtherValue 내가 당신이 최선의 선택이 형성되고 새 컬렉션을 반환하는 것입니다있어 내 질문 :두 뷰 모델의 데이터 목록보기
0
A
답변
1
의 내 설명과 함께 많은 당신을 혼동하지 않았다 희망 CollectionB
<ListView ItemsSource="{Binding ViewModelA.CollectionClassA}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=ClassA.Name}"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=ClassB.OtherValue}"/>
</GridView>
</ListView.View>
</ListView>
에서 페치 해당 컬렉션에 특수화 된 새로운 뷰 모델 (또는 모델)을 기반으로 한 뷰 모델 수준 :
public class OtherViewModel
{
//Expand these if you want to make it INPC
public int Id { get; private set; }
public string Name { get; private set; }
public Foo OtherValue { get; private set; }
}
public class MainViewModel
{
// Somewhere in MainViewModel, create the collection
ObservableCollection<OtherViewModel> CreateCollection(ICollection<ClassA> a, ICollection<ClassB> b)
{
var mix = a.Join(b, a => a.Id, b => b.Id,
(a, b) => new OtherViewModel { Id = a.Id, Name = a.Name, OtherValue = b.OtherValue });
return new ObservableCollection<OtherViewModel>(mix);
}
// Expose the collection (possibly INPC if needed)
public ObservableCollection<OtherViewModel> MixedCollection { get; private set; }
}
XAML :
<!-- Assuming the DataContext is MainViewModel -->
<ListView ItemsSource="{Binding MixedCollection}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=Name}"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=OtherValue}"/>
</GridView>
</ListView.View>
</ListView>
주의 사항 : 당신이 관찰 될이 컬렉션을해야하는 경우가 ObservableCollection<T>
여부를 선택하여 사용할 수 있습니다
- , 그것은 당신에게 달려 있습니다.
- 보기 모델을 확장하여
ClassA
및ClassB
컬렉션을 구독하면 기본 컬렉션이 변경 될 때 업데이트 할 수 있습니다.
어느 쪽이든, 이것은 코드에 맞게 조정할 수있는 좋은 방향을 제시합니다.
+0
이것을 시도합니다 – Peter
관련 문제
- 1. MVC3의 뷰 모델의 새로운 데이터 뷰, C#
- 2. 주어진 XML 모델의 목록보기
- 3. 하나의보기에서 두 모델의 데이터 표시
- 4. 뷰 모델의 뷰 메서드 호출
- 5. 뷰 모델의 ReactiveList를 뷰 모델의 뷰를 포함하는 ListView에 바인딩하는 방법
- 6. 쿼리 뷰 모델의 템플릿
- 7. 참조 뷰 모델의 DataContext를가
- 8. MainWindow를 뷰 모델의 참조
- 9. 뷰 모델에서 모델의 속성을 공개해야합니까?
- 10. WPF 뷰 모델의 올바른 사용
- 11. 절반 슬라이딩 뷰 페이지가있는 두 개의 목록보기 안드로이드
- 12. 모델의 데이터
- 13. 컬렉션을 포함한 모델의 Backbone.js 뷰?
- 14. 뷰 모델의 일부를 컨트롤러에 전달
- 15. Symfony2와 뷰 모델의 MVC 개념
- 16. 두 모델의 지시어 일치
- 17. 양식의 데이터 필드를 두 모델의 두 열로 저장하려는 경우
- 18. 모델의 데이터 개체 컬렉션을 뷰 (WPF)의 컨트롤 그룹에 바인딩
- 19. 뷰 모델의 현재 인스턴스에 대한 참조 얻기
- 20. 뷰 모델의 엔터티 변경 내용 추적
- 21. 두 테이블 뷰 간 데이터 전달
- 22. 두 목록보기 동기화 동기화
- 23. 두 개의 레이아웃이있는 목록보기
- 24. 뷰 모델의 객체 바인딩 - 그 속성 변경
- 25. 동적 뷰 모델의 녹아웃 유효성 확인
- 26. 해시 맵 데이터 목록보기 표시
- 27. 녹아웃에서 다른 뷰 모델의 뷰 모델을 바인딩하는 방법은 무엇입니까?
- 28. 동일한 모델의 Qt 테이블 및 트리 뷰
- 29. 뷰 모델의 하위 모델 유효성 검사
- 30. 두 모델의 한 형식
실제로 해 보았습니까? 무슨 일이야? – RhysW
다른 datacontext에서 CollectionB 바인딩을 얻는 방법을 모르겠습니다. – Peter
그래서 A와 B를 모두 포함하는 래퍼가 필요하며이를 항목 소스로 사용합니까? – RhysW