如何在创建 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 的元素。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...