通用 Windows 平台上的递归 XAML 绑定数据模板

2023-12-01

所以我有一个任务类,它有几个属性,并且里面还可以有一个任务对象列表(子任务)。我想在“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(使用前将#替换为@)

通用 Windows 平台上的递归 XAML 绑定数据模板 的相关文章

随机推荐

  • 故事板和切换视图?

    我有一个使用故事板功能的 iPad 应用程序 然后我有一个单独的 xib 文件用于另一个视图 我可以切换到单独的视图 它很好 IBAction SecondView id sender SecondView Second SecondVie
  • Mule 中是否有break语句

    我有一个array list我循环使用的值
  • 从外部应用程序枚举浏览器选项卡

    有点奇怪 具有挑战性 的问题 是否可以从外部应用程序以编程方式访问打开的浏览器的选项卡 我知道这是一个模糊的问题 但请听我说完 我正在尝试创建一个 Gmail 聊天通知程序 应用程序 当存在未答复的聊天消息时 该应用程序会在 Windows
  • 当应用程序发送 401 时,Azure 应用程序网关抛出 502

    Azure 应用程序网关显示502 bad gateway error 当应用程序返回时401 or 500 errors 它应该发送应用程序发送的任何内容 但默认情况下它发送502 知道发生了什么以及有任何配置或代码更改建议吗 EDIT
  • Laravel 5.8 中未捕获的错误“找不到类”

    我正在尝试从另一个文件夹调用我的模型文件 我已经提供了这两个文件结构 我收到此错误 未捕获错误 在 Applications XAMPP xamppfiles htdocs pro app Scr ipts Providers 1 Scra
  • 在 iOS Obj-C 中添加 Firebase 数据库引用的位置

    我正在通过 Firebase 设置实时数据库 但很困惑在哪里放置以下代码行 self ref FIRDatabase database reference 这些是我遵循的说明 https firebase google com docs d
  • Visual Studio - 附加到进程快捷方式

    当我想调试时 我必须执行 调试 gt 附加到进程 gt 在列表中查找进程 gt 附加 我想知道是否可以创建某种快捷方式来为我执行此操作 The shortcut is Ctrl Alt P in Visual Studio 2005 and
  • C++ DLL 调用 C# DLL 的选项有哪些?

    我有一个 C DLL 需要调用 C 类库中的函数 传递值 返回值 我唯一的选择是为 C DLL 提供 COM 接口并使用 IDispatch 从 C 调用它吗 这是最好的方法吗 这里有几个选项可供您选择 使用混合模式 C CLI 程序集作为
  • Google 地图 V3 邮政编码未返回

    我对谷歌地理编码结果有疑问 我正在对法国城市进行地理编码并希望获取其邮政编码 我的问题是 Google 响应了除邮政编码之外的所有数据 例如 对于 Ach re City 我得到了 address components 结果 Object
  • 使用 C# 修复不受信任数据的反序列化

    我有以下相关的 C 代码 json File ReadAllText path isStudentObject JsonConvert DeserializeObject
  • url 中的双转义序列:请求过滤模块被配置为拒绝包含双转义序列的请求

    在我的 ASP NET MVC 应用程序中 我尝试实现如下所示的 URL 产品 标签 for families 当我尝试使用默认配置运行应用程序时 我收到此消息 其中包含 404 11 响应代码 HTTP 错误 404 11 未找到 请求过
  • 如何使用范围和字符串比较来减少代码的运行时间

    我有以下代码 它完全按照我需要的方式执行 但是 循环运行时间太长 3 分钟以上 我是 VBA 新手 所以我不太确定 1 最好的替代方案是什么 2 如何为该替代方案使用正确的语法并使我的代码完美运行 谢谢 Dim i As Integer F
  • R图-在一点画一个大圆

    我怎样才能提出一个大的 没有彩色圆圈的点 x0 和 y0 只是具有 1 值的列表 所以这只是绘制一个值 points x x0 y y0 col green pch 16 但圆圈有点小 而且是彩色的 要使单个绘图字符更大 请使用cex as
  • 按填充子集对堆叠条中的 x 轴进行排序

    有多个问题 here例如 如何在条形图中按频率排列 x 轴ggplot2 但是 我的目标是根据填充子集的相对频率在堆积条形图中的 X 轴上排列类别 例如 我想按类别的百分比对 x 轴进行排序B在变量中z 这是我第一次尝试仅使用 ggplot
  • 将 WCF 合约移至单独的 dll

    我想将 WCF 合约接口移至第三个 DLL 并在手动生成代理时开始从客户端使用它们 DLL中的那些接口必须有吗 ServiceContract 当我从客户端使用它们来生成代理时属性 知道 Dll 的最佳命名是什么吗 它只有合同和 DTO 在
  • 面临 Visual Studio 2015 和 2013 的突然崩溃

    我最近几天面临这个问题 我的 Visual studio 2015 突然崩溃 在检查应用程序事件日志时 我发现对于每次崩溃 都会在其中输入以下日志 Faulting application name devenv exe version 1
  • 当对 XML 中的节点值求和时,SQL Server 出现奇怪的行为

    我问一个关于求和节点值的问题 对 sql server 2008 中的一些 xml 节点值求和 请考虑这段代码 Declare xml xml set xml
  • window.history.back() 显示“文档已过期”页面,有什么办法吗?

    客户要求用户能够在单击结果后返回到充满搜索结果的页面 现在这是一个简单的 jQuery 调用 a detail back button on click function evt evt preventDefault window hist
  • 使用 javascript 填充角度输入

    设置元素的value不管用 它的行为不像用户输入 当我提交此输入时 弹出窗口告诉我我根本没有填写输入 如何像用户一样填充这个输入元素 div class login input input group div
  • 通用 Windows 平台上的递归 XAML 绑定数据模板

    所以我有一个任务类 它有几个属性 并且里面还可以有一个任务对象列表 子任务 我想在 UWP 上递归显示每个任务及其子任务 根据这篇文章 显然 WPF 为此目的有特殊的 UserControls 递归数据模板可能吗 但它们似乎在 UWP 上不