Xamarin Forms - 在ViewCell中访问数据绑定对象

时间:2017-01-16 20:57:44

标签: xamarin xamarin.forms

我正在创建一个ListView,其项目我想用代码直接控制。我有以下xaml声明一个通用的ListView。

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:ViewCellClick"
             x:Class="ViewCellClick.MainPage">
    <ListView x:Name="___listview" HasUnevenRows="True">
        <ListView.ItemTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ContentPage>

然后在后面的代码中,我设置了ItemsSource属性。

namespace ViewCellClick
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
            ___listview.ItemsSource = Repository.GetList();
            ___listview.ItemTemplate = new DataTemplate(typeof(CustomViewCell));
        }
    }

这会利用定义为...的自定义模板

    public class CustomViewCell : ViewCell
    {
        public CustomViewCell()
        {
            var stack = new StackLayout();

            stack.Children.Add(new Label() { Text = "Label" });

            // HOW DO I ACCESS THE MODEL HERE SO I CAN DRAW CUSTOM UI DEPENDING ON THE MODEL INSTANCE?

            View = stack;
        }
    }
}

在这个级别,我有一个非常通用的自定义视图单元格,因为它只创建一个标签。但是,假设模型很复杂,并且根据模型中的数据,我会为该ViewCell实例绘制不同的UI。

如何访问每个CustomViewCell的模型,然后根据该模型绘制UI?

我尝试过BindingContext,但它在CustomViewCell构造函数中为null。

enter image description here

1 个答案:

答案 0 :(得分:1)

ViewCell的BindingContext将引用列表中的当前项。您需要将其强制转换为适当的类型才能使用它。