我正在制作一个定制的可水平滚动的ListView类型控件,我遇到了一个我无法解释的问题,而且我不能百分之百肯定这个问题与我的代码是一致的,除非我误解了什么。
我已经把这个问题提炼成了我可以在https://github.com/sparkeh9/XamarinFormsListViewIssue上找到的最简单的形式。
因此,我有一个HorizontalListView控件,它使用一个非常简单的数据模板选择器(没有逻辑,返回一个数据模板)。
我的问题是,当我使用模板选择器时,当调用ItemTemplateSelector.CreateContent()以开始基于模板生成UI控件时,它会抛出一个异常见异常截图,声明LoadTemplate属性不应该为null。我查看了基类,发现这个属性是一个私有的Func<object>,只能通过调用特定的构造函数从外部设置。
如果我在XAML中指定了一个文字项模板,那么所有内容都会按预期工作,例如:
<controls:HorizontalListView.ItemTemplate>
<DataTemplate>
<Label Text="test"></Label>
</DataTemplate>
</controls:HorizontalListView.ItemTemplate>编辑:回答了我自己的问题
发布于 2018-04-15 22:37:59
我知道了我做错了什么--如果类型是DataTemplateSelector,那么您必须首先通过调用ItemTemplateSelector.SelectTemplate( item, null )生成一个模板,然后您可以调用CreateContent()。
我承诺这样做是为了证明我的意思:https://github.com/sparkeh9/XamarinFormsListViewIssue/commit/f2f0d807d2d463d1fe9e6a89f0d3c0c7676a0761
https://stackoverflow.com/questions/49825489
复制相似问题