如何在Xamarin表单中使用DataTemplate的Layout <view>控件中包装视图

时间:2018-12-31 23:24:44

标签: c# xamarin.forms

在Xamarin Forms示例中,有一个名为WrapLayout的示例项目。这将在自定义布局控件中显示图像(从View继承)。 这对于以自动换行的布局显示图像非常有用,但是我需要在图像下方显示一行文字来显示图像。如果可以指定某种方式的DataTemplate会很棒。但是我想它之所以没有ItemTemplate DataTemplate属性的原因是因为也没有ItemsSource属性。

有人可以告诉我如何扩展WrapLayout控件,以便我可以指定DataTemplate并绑定到控件上的ItemsSource属性(而不必使用后面的代码填充该控件)吗?

或者我可以使用另一个控件来以换行的布局显示图像,从而在每个图像下方显示一行文本吗?

非常感谢

2 个答案:

答案 0 :(得分:0)

在Xamarin 4.0(尚未正式发布)中,有一个名为CollectionView的控件。

您可以使用您提到的方法来显示更多图片,但只能在有限的项目上使用,并且在大量项目上会使应用程序崩溃(实际上首先会降低速度)向下滑动应用程序,可能会使滚动无响应),因此最好避免。

答案 1 :(得分:0)

您应该考虑使用ItemTemplate创建自己的自定义控件,而不是创建DataTemplateCustomView。然后,您可以在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);
}