在 .NET MAUI 中,CollectionView 在调试模式下能正常工作但在发布模式下不能工作。

4

我有以下内容

<CollectionView Margin="5" ItemsSource="{Binding Subjects}">
    <CollectionView.ItemsLayout>
        <GridItemsLayout Orientation="Vertical" Span="2" />
    </CollectionView.ItemsLayout>
    <CollectionView.EmptyView>
        <ContentView>
            <Label Text="No subjects entered yet..." />
        </ContentView>
    </CollectionView.EmptyView>
    <CollectionView.ItemTemplate>
        <DataTemplate>
            <Border MaximumWidthRequest="300">
                <Border.StrokeShape>
                    <RoundRectangle CornerRadius="10" />
                </Border.StrokeShape>
                <Border.GestureRecognizers>
                    <TapGestureRecognizer Command="{Binding Source={RelativeSource AncestorType={x:Type vm:MainPageViewModel}}, Path=DeleteSubjectCommand}" CommandParameter="{Binding .}" />
                </Border.GestureRecognizers>
                <Label Margin="5" Text="{Binding .}" />
            </Border>
        </DataTemplate>
    </CollectionView.ItemTemplate>
</CollectionView>

问题是在我的.NET MAUI Android应用程序中,<Label Margin="5" Text="{Binding .}" />在发布时为空,而在调试时,它是有内容的,手势识别器也可以工作。 当我向列表中添加项目时,正确数量的项目出现,所以我认为上面突出显示的标签发生了一些事情。
我该如何解决这个问题?

这个“Subjects”是使用String作为泛型的ObservableCollection,对吧?CollectionView存在许多问题,但在你的XAML周围发布一些C#代码不会有任何影响。 - H.A.H.
  • 如果你使用... Text="This is a test" />,该文本会显示吗?
  • 如果你移除边框及其识别器,所以DataTemplate 简单地是<Label ... />,那么绑定的文本是否会显示?
  • 添加c#代码:主题声明、设置Subjects或添加其项的代码
  • 那个代码从构造函数中调用吗?从OnAppearing中调用吗?在一个异步方法中内部调用?
- ToolmakerSteve
我做了第二件事情。但它仍然没有出现。这是一个测试,只会在调试模式下出现,而不会在发布模式下出现。 - Tanaka Mawere
1个回答

4

替换:

<DataTemplate>

使用:

<DataTemplate x:DataType="{x:Type x:String}">

不要问我为什么。


我真的很想问为什么。 - Tanaka Mawere
3
@TanakaMawere,我不知道。我已经发布了几个版本,以前从未遇到过你的问题。我注意到的是,我总是指定我的模板的数据类型。去掉数据类型后,在发布中进行测试,我的某些CollectionView变成了空白。设置背景色后,它们仍然存在,但项目没有加载。切换到调试模式-项目再次呈现。我简直不敢相信。 - H.A.H.
请尝试一下。 - H.A.H.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接