2016-04-19 8 views
1

私はいくつかのプロパティを持ち、タスクオブジェクト(子タスク)を内部に持つクラスTaskを持っています。私は各タスクとそのサブタスクを 'UWP'に再帰的に表示したいと思います。どうやら 'WPF'はこの投稿に応じてこの目的のために特別な 'UserControls'を持っていたようです:Are recursive DataTemplates possible?ユニバーサルWindowsプラットフォーム上の再帰的なXAMLバインディングデータテンプレート

「UWP」では利用できないようです。

答えて

0

TreeViewコントロールを使用できます。

このプロジェクトへのリンク:NuGet:WinRTXamlToolkitGitHub:WinRTXamlToolkitです。

は、パッケージマネージャコンソールを使用して、あなたのプロジェクトでそれをインストールします。Install-Package WinRTXamlToolkit.UWP

私はあなたの条件から基本的なデモを行いました。

<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

がたくさんありがとう、それをスタイルするために多くの問題をようだが、

MainPage.xamlを:以下のコードを参照してください。それは私が求めているものなので、私は答えとしてマークします – NicolasL

関連する問題