[我在这里阅读: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>
但是我不想加载所有子项,我只想按照示例中的说明进行扩展时才加载它们。但是为了显示Expand gliph,我需要为根项目设置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>
一旦加载该项目,我就使用Converter将HasUnrealizedChildren更改为false