2012-04-10 5 views
0

"List MyItems"목록이 포함 된 MyResult 개체가 있습니다.목록에 C# TreeView 추가

이 항목을 C# WPF TreeView에 추가하고 싶습니다.

이렇게하는 가장 좋은 방법은 무엇입니까?

여기에 대한 단계별 자습서가 있습니까? 나는 등 모든 MVVM 클래스와

감사

답변

1

나는 당신의 목록에서 개체를 있으리라 믿고있어 혼란는군요 때문에 목록의 어떤 종류가있다. 이 경우 hierarchicaldatatemplate을 사용해보아야합니다.

간단한 예는 다음과 같을 수 있습니다. 이것은 radtreeview에서 사용한 세그먼트에서 왔지만 동일하게 작동합니다.

<!-- xaml --> 
<UserControl.Resources> 

      <Style x:Key="_treeViewItemStyle" TargetType="telerik:RadTreeViewItem"> 
       <Setter Property="Visibility" Value="{Binding IsVisible, Converter={StaticResource VisibilityConverter}}" /> 
      <Setter Property="IsEnabled" Value="{Binding IsEnabled}"/> 
      <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/> 
      <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}"/> 
      <Setter Property="HorizontalAlignment" Value="Left"/> 
     </Style> 

     <UI:HierarchicalDataTemplate x:Key="_treeViewTemplate" 
          ItemsSource="{Binding NodeItems}" 
              > 

       <TextBlock Margin="3,0,0,0" Text="{Binding Header}"> 
       </TextBlock> 

     </UI:HierarchicalDataTemplate> 

    </UserControl.Resources> 


    <telerik:RadTreeView x:Name="_pageNavigator" ItemsSource="{Binding InspNavList}" ItemDoubleClick="SendFocusToPage" SelectedItem="{Binding SelectedNavItem, Mode=TwoWay}" ItemTemplate="{StaticResource _treeViewTemplate}" ItemContainerStyle="{StaticResource _treeViewItemStyle}" /> 
1

당신은

treeview.ItemsSource = myList에 사용할 수 있습니다.

Here은 MVVM을 사용하여 수행하는 방법에 대한 자습서입니다.

+0

+1이 방법이 효과적입니다. 감사. – Stef

1

일을하는 가장 좋은 방법은 없습니다. 글쎄요, 사실은 있습니다 만, 시스템 자체와 현 상황 (깊이있는 지식뿐만 아니라)에 관한 좀 더 많은 데이터가 있어야 일을하는 가장 좋은 방법을 알 수 있습니다. 음, 그건 제쳐두고.

바인딩을 사용하려는 경우 다음을 수행 할 수 있습니다.

a. 귀하의 페이지/창/usercontrol 귀하의 개체 (MyResult) 가리 키도록 DataContext 속성을 설정합니다.

b. XAML 파일에서 다음 스 니펫을 사용하여 treeView 항목을 해당 목록에 바인딩합니다.

<TreeView ItemsSource={Binding MyItems}> 
    .... 
    </TreeView> 

c. 결과를 즐기십시오.

고려해야 할 몇 가지 사항이 있습니다. 1. MyItems 개체에 대해 DataTemplate을 구현해야합니다. 기본 구현은 트리보기에 넣기 위해 ToString() 결과를 취합니다. 2. 계층 적 데이터 (계층이있는 데이터를 의미)를 사용하려면 HierarchicalDataTemplate을 구현하고 트리의 모든 노드에 대해 자식을 가져올 위치를 가리켜 야합니다. 3. 올바른 바인딩을 위해 ObservableCollection 사용을 고려해야합니다. 목록의 항목을 추가/삭제할 때마다 UI에서 변경 사항이 호출됩니다.

다음은 몇 가지 링크로 시작할 수 있습니다. first, second, third.

+0

이 파일은 다음에서부터 시작하는 것이 좋습니다. http://stackoverflow.com/questions/6415037/populate-treeview-from-list-of-file-paths-in-wpf – Stef