如何在创建 DataTemplate 时获取绑定上下文

问题描述

有没有办法在枚举模板中获取绑定上下文本身?

this.CollectionView.ItemTemplate = new DataTemplate(() =>
{
    var view = new SubView();
    view.SetBinding(SubView.sourceProperty,new Binding()
    {
        Source = ??? // <- here
    });
    
    return view;
};

注意:
Path = "." 在 Android 上运行良好。但在 iOS 上,源是重复的。
我已经检查过 CollectionView.ItemsSource 中没有重复项。

解决方法

我是这个平台的新手,希望能帮到你。 我了解您想要获取列表中每个元素的 BindingContext。如果我的解释正确,那么您可以这样做:

public partial class NotificationsPage : ContentPageBase
{
    public NotificationsPage()
    {
        InitializeComponent();
        CollectionView.ItemTemplate = new DataTemplate(() =>
        {
            return new Item();
        });
    }
}

public class Item : ContentView
{
    protected override void OnBindingContextChanged()
    {
        base.OnBindingContextChanged();
        if (BindingContext is ItemModel item)
        {
            var name = item.Name;
        }
    }
}

public class ItemModel
{
    public string Name { get; set; }
}

DataTemplate 不包含可访问的 BindingContext,BindingContext 被传递给包含 DataTemplate 的元素。