所以我有一个任务类,它有几个属性,并且里面还可以有一个任务对象列表(子任务)。我想在“UWP”上递归显示每个任务及其子任务。根据这篇文章,显然“WPF”为此目的有特殊的“UserControls”:递归数据模板可能吗?
但它们似乎在“UWP”上不可用。
您可以使用 TreeView 控件。
以下是该项目的链接:NuGet:WinRTXaml工具包 and GitHub:WinRTXaml工具包.
使用包管理器控制台将其安装到您的项目中:Install-Package WinRTXamlToolkit.UWP
我根据你的要求做了一个基本的演示。请参阅下面的代码:
主页.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; }
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)