ListView(跨平台)中的多个自定义单元格

时间:2015-02-23 21:22:53

标签: xamarin xamarin.forms

目前使用ListView,我发现您可以为单元格创建模板,这使得每个单元格看起来完全相同。您不能在列表视图中拥有多个自定义单元格。有一些解决方法,比如根据内容隐藏单元格中的内容,但这看起来很糟糕。

我想在tableview上使用listview的原因是因为我们计划进行插入,删除,动态显示某些单元格,并且listview可以绑定到数据源。

1 个答案:

答案 0 :(得分:0)

创建您自己的ViewCell,它会覆盖绑定上下文更改方法。绑定更改时,将ViewCell的视图设置为与视图模型类型匹配的视图,并设置单元格的高度。下面是一个快速示例,可以让您了解如何完成它。

public class DataTemplateCell1 : ViewCell
{
    protected override void OnBindingContextChanged()
    {
        var vm1 = this.BindingContext as ViewModel1;
        if (vm1 != null)
        {
            this.View = new View1() { HeightRequest = 40 };
            this.Height = this.View.HeightRequest;
            return;
        }

        var vm2 = this.BindingContext as ViewModel2;
        if (vm2 != null)
        {
            this.View = new View2() { HeightRequest = 80 };
            this.Height = this.View.HeightRequest;
            return;
        }

        base.OnBindingContextChanged();
    }
}