2012-07-06 4 views
0

나는 창에서 treeviews해야합니다. 두 트리 뷰 모두 관찰 가능한 컬렉션 "ReportStructure"에 바인딩됩니다.WPF 트 리뷰 업데이트

두 개의 트리 뷰 모두 관찰 가능한 컬렉션의 트리 수준 hierarcical 구조를 보여줍니다. 하나의 트리 뷰 T1을 사용합니다. 두 번째 treeview T2에 표시 할 노드를 선택하십시오.

첫 번째 트리보기에는 각 잎에 체크 박스가 있으며 잎을 확인하거나 선택 취소하면 T2에 표시되거나 숨겨집니다. 위해서 나 내가이

var IEquip = from eq in Report.Document.InspectionData.Equipments where eq.PartData.ReportIncluded = true 
        orderby eq.PartData.Order ascending 
        select eq; 


     EquipmentView = CollectionViewSource.GetDefaultView(IEquip); 
     EquipmentView.SortDescriptions.Add(
     new SortDescription("PartData.Order", ListSortDirection.Ascending)); 

은 "ReportStructure"와 같은 바인딩 collectionview를 다시 쿼리해야한다는 위의 Report.Document.InspectionData.Equipments입니다해야 할 일에 대해.

내 문제는 내가 T2의 데이터 컨텍스트를 다시 쿼리 할 때 T1의 모든 노드가

내가 명시 적 updatesourcetrigger 설정 한 나는 내 XAML

를 축소하고 있지만 여전히 붕괴 것입니다.

<TreeView Grid.Row="5" IsEnabled="True" HorizontalContentAlignment="Stretch" Background="Transparent" BorderThickness="0" 
    ItemsSource="{Binding ReportStructure, UpdateSourceTrigger=Explicit}" HorizontalAlignment="Stretch" /> 

복제가 해결책이 될 것입니다,하지만 난 복제를 거치지 않고 T1의 정보에서 T2를 업데이트 할 수있는 possiblity를 풀어

답변

0

나의 이해는 TreeViewItem이 이전 할 때마다 확장되었는지 기억하지 않는다는 것입니다 당신은 당신의 재주문을 수행합니까? '장비'클래스에 "IsExpanded"속성을 추가 한 다음 TreeViewItem의 IsExpanded 속성을 viewmodel의 속성에 바인딩하십시오.