2017-10-29 1 views
-3

WPF에서 정적 루트 수준의 다중 수준 TreeView를 만들려고하고 있지만 그럴 수 없습니다. 내 XAML에 관해서는C# wpf 개체에서 3 수준의 트리보기

public class Project 
{ 
    Project() 
    { 
     Systems=new ObservableCollection<System>(); 
     Systems.Add(new System(Type="TypeA","SubTypeAA","SysA")); 
     Systems.Add(new System(Type="TypeB","SubTypeBA","SystemA")); 
     // ... 
    } 


    public ObservableCollection<System> Systems; 
    // ... 
} 

class System 
{ 
    System(string type, string subType, string name) 
    { 
     Type = type; 
     SubType = subType; 
     Name = name; 
    } 

    public string Type{get;} 
    public string SubType{get;} 
    public string Name{get;} 

    // ... 
} 

내 DataContext에이 프로젝트입니다 그래서 내 생각 : 여기 treeview

내가 사용하는 클래스입니다 : 여기

은 내가 찾고 결과입니다 TreeView ItemsSource는 시스템이 될 것이지만 그 후에는 어떻게 작동시키는 지 혼란스러워합니다.

첫 번째 항목/레벨 Sysetems는

감사합니다 '정적'입니다.

+0

안녕하세요. Treeview로 작업 할 때 재귀 구조로 생각해야합니다. 모든 레벨에는 자신의 자식 목록 (기본적으로)이 들어 있습니다. 다음은 [WPF TreeView with HierarchicalDataTemplate] (https://stackoverflow.com/questions/46947894/wpf-treeview-with-hierarchicaldatatemplate-and-observablecollection-containing-c/46950219#46950219) – Bob

답변

0

첫 번째 단계는 쉽습니다.

public class SingleInstanceToCollectionConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return new List<object> {value}; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return DependencyProperty.UnsetValue; 
    } 
} 
<Window.Resources> 
    <local:SingleInstanceToCollectionConverter x:Key="SingleInstanceToCollectionConverter"/> 
</Window.Resources> 
<TreeView ItemsSource="{Binding Project, Converter={StaticResource SingleInstanceToCollectionConverter}}"> 
    <TreeView.Resources> 
     <HierarchicalDataTemplate DataType="{x:Type local:Project}" ItemsSource="{Binding Systems}"> 
      <TextBlock Text="Systemes"/> 
     </HierarchicalDataTemplate> 
     <DataTemplate DataType="{x:Type local:SystemClass}" > 
      <TextBlock Text="{Binding Name}"/> 
     </DataTemplate> 
    </TreeView.Resources> 
</TreeView> 

를 트리의 나머지는 계층을 생성해야합니다 : 당신이 당신의 트 리뷰의 ItemsSource에 바인딩 할 수 있도록 간단히 모음으로 하나의 정적 요소를두고 변환기를 추가 데이터의 ViewModel 표현 또는 추가 변환기를 사용하여이를 달성하십시오. 이미지와 데이터가 실제로 어떤 상관 관계가있는 것은 아니므로 직접 알아낼 필요가 있습니다.

+0

에 대한 답변입니다. 코드는 프랑스어로되어 있었고, System이 예약 된 클래스라는 중요한 세부 사항을 생각하지 않았습니다. 실제 클래스 이름이 아니기 때문에 중요한 것만 표시하고 내 아이디어 시스템은 나쁜 이름이었습니다. – user3704628