我正在制作一个自定义的水平滚动 ListView 类型控件,我遇到了一个我无法解释的问题,而且我不能 100% 确定问题是否与我的代码有关,除非我误解了一些东西.
我已将问题提炼为最简单的形式,可在https://github.com/sparkeh9/XamarinFormsListViewIssue 获得。
所以,我有一个使用非常简单的数据模板选择器的 HorizontalListView 控件(没有逻辑,返回单个数据模板)
我的问题是,当我使用模板选择器时,在调用ItemTemplateSelector.CreateContent()以开始基于模板生成 UI 控件时,它会引发异常请参阅异常屏幕截图,其中声称 LoadTemplate 属性不应为空。我查看了基类,发现这个属性Func<object>是私有的,只能通过调用特定的构造函数从外部设置。
如果我在 XAML 中指定文字项模板,则一切都按预期工作,例如:
<controls:HorizontalListView.ItemTemplate>
<DataTemplate>
<Label Text="test"></Label>
</DataTemplate>
</controls:HorizontalListView.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
编辑:回答了我自己的问题