我正在创建一个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。
答案 0 :(得分:1)
ViewCell的BindingContext
将引用列表中的当前项。您需要将其强制转换为适当的类型才能使用它。