カスタムの水平方向にスクロール可能なListViewタイプのコントロールを作成している最中ですが、説明できない問題が発生しました。何かを誤解しない限り、問題が自分のコードでも発生するかどうかは100%わかりません。 。
この問題を、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>
編集:私自身の質問に答えました
私が間違ったことを理解しました-タイプがDataTemplateSelectorの場合、最初にを呼び出してテンプレートを生成する必要があります。その後、を呼び出すItemTemplateSelector.SelectTemplate( item, null )
ことができます。CreateContent()
私が意味することを示すためにこれをコミットしました:https://github.com/sparkeh9/XamarinFormsListViewIssue/commit/f2f0d807d2d463d1fe9e6a89f0d3c0c7676a0761
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加