You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI中Expander嵌套CollectionView在iOS上异常求助

解决方案

以下是针对iOS平台Expander嵌套CollectionView折叠后再次展开为空问题的几种可行修复方案:

1. 展开时强制刷新CollectionView的数据源

在Expander的ExpandedChanged事件中,当检测到展开动作时,重新赋值CollectionView的ItemsSource,触发绑定更新:

XAML代码修改

<toolkit:Expander ExpandedChanged="Expander_ExpandedChanged">
    <toolkit:Expander.Header>
        <!-- 你的头部内容 -->
    </toolkit:Expander.Header>
    <toolkit:Expander.Content>
        <CollectionView x:Name="NestedCollection" ItemsSource="{Binding YourItemCollection}" />
    </toolkit:Expander.Content>
</toolkit:Expander>

后台代码实现

private void Expander_ExpandedChanged(object sender, ExpandedChangedEventArgs e)
{
    if (e.IsExpanded && sender is Expander expander)
    {
        var collectionView = expander.Content as CollectionView;
        if (collectionView != null && BindingContext is YourViewModel vm)
        {
            // 先清空再重新赋值,强制触发绑定更新
            collectionView.ItemsSource = null;
            collectionView.ItemsSource = vm.YourItemCollection;
        }
    }
}

2. 禁用CollectionView的虚拟化

iOS平台下CollectionView的虚拟化机制可能与Expander的视图回收逻辑冲突,关闭虚拟化可避免该问题(适合数据量较小的场景):

<CollectionView IsVirtualizing="False" 
                ItemsSource="{Binding YourItemCollection}">
    <!-- ItemTemplate 内容 -->
</CollectionView>

3. 用ContentView包裹CollectionView

给CollectionView套一层ContentView,隔离Expander的视图回收影响:

<toolkit:Expander.Content>
    <ContentView>
        <CollectionView ItemsSource="{Binding YourItemCollection}" />
    </ContentView>
</toolkit:Expander.Content>

4. 升级CommunityToolkit.Maui版本

该问题可能是工具包旧版本的iOS兼容Bug,将CommunityToolkit.Maui升级到最新稳定版,很多类似的UI组件问题会被官方修复。


内容的提问来源于stack exchange,提问作者David Shochet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 13:35:02