微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将参数传递给 Xamarin 中的自定义 ViewCell?

如何解决如何将参数传递给 Xamarin 中的自定义 ViewCell?

我有自定义 ViewCell 和两个不同参数的初始值设定项。每个初始值设定项以不同的方式创建一个单元格,具体取决于传递的参数。我使用我将传递的数据创建了一个 ObservableCollection,并将其分配给 ItemsSource。接下来需要将完成的单元格返回给ItemTemplate,但是如何向它传递参数?

    public UniversalListPage(ElementType type,List<UniversalBigClass> data)
    {
        InitializeComponent();
        this.Data = new ObservableCollection<UniversalBigClass>(data);
        this.DataList.ItemsSource = this.Data;

        this.DataList.ItemTemplate = new DataTemplate(() =>
        {
            return new UniversalCell(/*parameters from ItemSource*/);
        });
    }

解决方法

如果我理解正确,您可以使用 DataTemplateSelector 来实现这一点。 DataTemplateSelector 可用于在运行时根据项目的属性值选择 DataTemplate。这使得可以将多个 DataTemplate 应用于同一类型的对象,以自定义特定对象的外观。

数据模板选择器是通过创建一个继承自 DataTemplateSelector 的类来实现的。然后覆盖 OnSelectTemplate 方法以返回特定的 DataTemplate,如以下代码示例所示:

public class PersonDataTemplateSelector : DataTemplateSelector
{
  public DataTemplate ValidTemplate { get; set; }
  public DataTemplate InvalidTemplate { get; set; }

  protected override DataTemplate OnSelectTemplate (object item,BindableObject container)
  {
    return ((Person)item).DateOfBirth.Year >= 1980 ? ValidTemplate : InvalidTemplate;
  }
}

更多详情,您可以查看:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/templates/data-templates/selector

上面的文档中包含一个示例,您可以在这里查看: https://docs.microsoft.com/en-us/samples/xamarin/xamarin-forms-samples/templates-datatemplateselector/ .

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。