【问题标题】:Accessing custom objects field when binding data绑定数据时访问自定义对象字段
【发布时间】:2018-08-20 11:37:55
【问题描述】:

我正在尝试将一些数据绑定到列表视图,我正在处理以下问题:

我的对象类型是 CartItem,它有一个 product 字段和一个 Quantity 字段。

Quantity 只是一个整数,但 Product 也是一个 model,它有一个长 ID、字符串 ImageUrl 和一堆其他字段。

我正在尝试将 Product 中的数据绑定到我的列表视图,如下所示:

<Image Grid.Column="0" Grid.RowSpan="2" Source="{Binding CartItem.Product.Image}">

但它不起作用。

有没有办法可以通过 XAML 文件访问它,或者我必须编写一些显式代码?

[编辑]:

protected override void OnAppearing()
{
    var stack = Navigation.NavigationStack;

    MainPage mainPage = (MainPage)stack[0];

    List<CartItem> cartList = mainPage.cart;

    //DependencyService.Get<IMessage>().LongAlert(cartList[0].product.Image);

    BindingContext = cartList;

    CartListView.ItemsSource = cartList;

    base.OnAppearing();
}

固定为:

<Image Grid.Column="0" Grid.RowSpan="2" Source="{Binding product.Image}"

【问题讨论】:

  • 这个应该可以了,你确定绑定的时候产品和图片都填好了?你设置了 BindingContext 了吗?
  • 另外;它们是公共财产吗?
  • 该列表在绑定时填充。属性也是公开的。

标签: c# xaml xamarin data-binding xamarin.forms


【解决方案1】:

如果您的 ItemsSource 是 List&lt;CartItem&gt;,那么列表中的每个元素都是 CartItem 的实例,因此绑定表达式应该是

Source="{Binding Product.Image}"

另请注意,在您注释掉的示例中,您使用的是“p”产品而不是“P”产品 - 请确保使用与您的属性命名相匹配的产品

【讨论】:

  • 你好杰森!非常感谢你的回答。实际上,问题在于“p”的大写。现在可以了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多