在Xamarin Forms示例中,有一个名为WrapLayout的示例项目。这将在自定义布局控件中显示图像(从View继承)。 这对于以自动换行的布局显示图像非常有用,但是我需要在图像下方显示一行文字来显示图像。如果可以指定某种方式的DataTemplate会很棒。但是我想它之所以没有ItemTemplate DataTemplate属性的原因是因为也没有ItemsSource属性。
有人可以告诉我如何扩展WrapLayout控件,以便我可以指定DataTemplate并绑定到控件上的ItemsSource属性(而不必使用后面的代码填充该控件)吗?
或者我可以使用另一个控件来以换行的布局显示图像,从而在每个图像下方显示一行文本吗?
非常感谢
答案 0 :(得分:0)
在Xamarin 4.0(尚未正式发布)中,有一个名为CollectionView
的控件。
您可以使用您提到的方法来显示更多图片,但只能在有限的项目上使用,并且在大量项目上会使应用程序崩溃(实际上首先会降低速度)向下滑动应用程序,可能会使滚动无响应),因此最好避免。
答案 1 :(得分:0)
您应该考虑使用ItemTemplate
创建自己的自定义控件,而不是创建DataTemplate
或CustomView
。然后,您可以在CustomView
中以自己想要的布局添加自己的Label
/ Image
/。然后,您可以像下面这样将此新的自定义控件添加到WrapLayout
的子级列表中:
List<CustomModel> listOfCustomModels = await GetListOfCustomModelsAsync();
foreach (var customModel in listOfCustomModels)
{
MyCustomControl customControl = new MyCustomControl
{
Source = customModel.Image,
Text = customModel.Text
};
wrapLayout.Children.Add(customControl);
}