使用 {x:Bind} 时 UWP TreeView HasUnrealizedChildren
UWP TreeView HasUnrealizedChildren when using {x:Bind}
我在这里阅读:Microsoft Docs: TreeView 我发现 属性 HasUnrealizedChildren 非常适合我的情况,因为我有一个可能非常深且非常复杂的 TreeStructure。
我不明白的是如何在数据绑定的情况下使用它。
就我而言,我有相同的:
<muxc:TreeView Name="DessertTree"
SelectionMode="Multiple"
ItemsSource="{x:Bind DataSource}">
<muxc:TreeView.ItemTemplate>
<DataTemplate x:DataType="local:Item">
<muxc:TreeViewItem
ItemsSource="{x:Bind Children}"
Content="{x:Bind Name}"/>
</DataTemplate>
</muxc:TreeView.ItemTemplate>
</muxc:TreeView>
但我不想加载所有子项,我只想在展开时加载它们,如示例中所述。但是为了显示展开字形,我需要为根项目设置 HasUnrealizedChildren
技巧如下:
<DataTemplate
x:Key="ItemTemplate"
x:DataType="model:MTreeViewBase"
x:DefaultBindMode="OneWay">
<winui:TreeViewItem IsExpanded="False" ItemsSource="{x:Bind Visits}" HasUnrealizedChildren="{x:Bind Loaded, Converter={StaticResource NotEnumToBooleanConverter}, ConverterParameter=Loaded, Mode=OneWay}">
<controls1:TreeViewControl Data="{x:Bind}" />
</winui:TreeViewItem>
</DataTemplate>
项目加载后,我使用转换器将 HasUnrealizedChildren 更改为 false
我在这里阅读:Microsoft Docs: TreeView 我发现 属性 HasUnrealizedChildren 非常适合我的情况,因为我有一个可能非常深且非常复杂的 TreeStructure。 我不明白的是如何在数据绑定的情况下使用它。 就我而言,我有相同的:
<muxc:TreeView Name="DessertTree"
SelectionMode="Multiple"
ItemsSource="{x:Bind DataSource}">
<muxc:TreeView.ItemTemplate>
<DataTemplate x:DataType="local:Item">
<muxc:TreeViewItem
ItemsSource="{x:Bind Children}"
Content="{x:Bind Name}"/>
</DataTemplate>
</muxc:TreeView.ItemTemplate>
</muxc:TreeView>
但我不想加载所有子项,我只想在展开时加载它们,如示例中所述。但是为了显示展开字形,我需要为根项目设置 HasUnrealizedChildren
技巧如下:
<DataTemplate
x:Key="ItemTemplate"
x:DataType="model:MTreeViewBase"
x:DefaultBindMode="OneWay">
<winui:TreeViewItem IsExpanded="False" ItemsSource="{x:Bind Visits}" HasUnrealizedChildren="{x:Bind Loaded, Converter={StaticResource NotEnumToBooleanConverter}, ConverterParameter=Loaded, Mode=OneWay}">
<controls1:TreeViewControl Data="{x:Bind}" />
</winui:TreeViewItem>
</DataTemplate>
项目加载后,我使用转换器将 HasUnrealizedChildren 更改为 false