2016-04-19 86 views

回答

0

您可以使用TreeView控件。

以下是此項目的鏈接:NuGet:WinRTXamlToolkitGitHub:WinRTXamlToolkitInstall-Package WinRTXamlToolkit.UWP

我從你的要求做了一個基本的演示:

在使用軟件包管理器控制檯項目中安裝它。請參見下面的代碼:

MainPage.xaml中:

<Page 
x:Class="TreeViewSample.MainPage" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:TreeViewSample" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:controls="using:WinRTXamlToolkit.Controls" 
xmlns:data="using:WinRTXamlToolkit.Controls.Data" 
mc:Ignorable="d"> 

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <controls:TreeView ItemsSource="{x:Bind myList}"> 
     <controls:TreeView.ItemTemplate> 
      <DataTemplate> 
       <data:DataTemplateExtensions.Hierarchy> 
        <data:HierarchicalDataTemplate ItemsSource="{Binding SubTasks}"></data:HierarchicalDataTemplate> 
       </data:DataTemplateExtensions.Hierarchy> 
       <TextBlock Text="{Binding Name}"></TextBlock> 
      </DataTemplate> 
     </controls:TreeView.ItemTemplate> 
    </controls:TreeView> 
</Grid> 

MainPage.xaml.cs中:

namespace TreeViewSample 
{ 
    public sealed partial class MainPage : Page 
    { 
     public MainPage() 
     { 
      this.InitializeComponent(); 
     } 
     public List<Task> myList; 

     protected override void OnNavigatedTo(NavigationEventArgs e) 
     { 
      myList = new List<Task>(); 
      var taskA = new Task("TaskA"); 
      taskA.SubTasks = new List<Task> { 
      new Task("SubTaskA"), 
      new Task("SubTaskB"), 
      new Task("SubTaskC") 
     }; 
     taskA.SubTasks[0].SubTasks = new List<Task> { 
      new Task("SubSubTaskA"), 
      new Task("SubSubTaskB"), 
      new Task("SubSubTaskC"), 
      new Task("SubSubTaskD") 
     }; 
     myList.Add(taskA); 
    } 
} 

    public class Task 
    { 
     public Task(string name) { 
      this.Name = name; 
     } 

     private String name; 

     public String Name 
     { 
      get { return name; } 
      set { name = value; } 
     } 

     public List<Task> SubTasks { get; set; } 

    } 
} 
+0

感謝了很多,這似乎是一個很麻煩的風格,但這是我要求的,所以我會標記爲答案 – NicolasL