C# DataTemplateSelector CreateContent引发InvalidOperationException

C# DataTemplateSelector CreateContent引发InvalidOperationException,c#,xaml,xamarin,mvvm,xamarin.forms,C#,Xaml,Xamarin,Mvvm,Xamarin.forms,我正在制作一个自定义的水平滚动ListView类型控件,我遇到了一个无法解释的问题,我不能100%确定这个问题是否与我的代码一致,除非我误解了什么 我已经把这个问题提炼成了我能找到的最简单的形式,可以在网站上找到 因此,我有一个HorizontalListView控件,使用一个非常简单的数据模板选择器(无逻辑,返回单个数据模板) 我的问题是,当我使用模板选择器时,调用ItemTemplateSelector.CreateContent()以开始基于模板生成UI控件时,它会抛出一个异常,声明L

我正在制作一个自定义的水平滚动ListView类型控件,我遇到了一个无法解释的问题,我不能100%确定这个问题是否与我的代码一致,除非我误解了什么

我已经把这个问题提炼成了我能找到的最简单的形式,可以在网站上找到

因此,我有一个HorizontalListView控件,使用一个非常简单的数据模板选择器(无逻辑,返回单个数据模板)

我的问题是,当我使用模板选择器时,调用
ItemTemplateSelector.CreateContent()
以开始基于模板生成UI控件时,它会抛出一个异常,声明LoadTemplate属性不应为null。我查看了基类,发现这个属性是一个私有的
Func
,只能通过调用特定的构造函数从外部进行设置

如果我在XAML中指定一个文本项模板,那么一切都会按预期工作,例如:

<controls:HorizontalListView.ItemTemplate>
    <DataTemplate>
        <Label Text="test"></Label>
    </DataTemplate>
</controls:HorizontalListView.ItemTemplate>


编辑:回答了我自己的问题

我发现我做错了什么-如果类型是DataTemplateSelector,那么您必须首先通过调用
ItemTemplateSelector生成一个模板。SelectTemplate(item,null)
,然后您可以调用
CreateContent()

我承诺这样做是为了证明我的意思:

这可能是胡说八道,但如果同时指定
ItemTemplateSelector
ItemTemplate
,其中一个不会覆盖另一个吗?也许是什么导致了这个问题?尽管如此,请发布整个
HorizontalListView.Style
我在遇到问题后添加了ItemTemplate和ItemTemplateSelector,这只是为了证明是选择器导致了问题:)此外,没有定义任何样式