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