【问题标题】:ItemSelected on ListView and more information about the object (Xamarin.Forms, C #)ListView 上的 ItemSelected 和有关对象的更多信息(Xamarin.Forms,C#)
【发布时间】:2019-09-25 12:00:10
【问题描述】:

我有问题。在我的 xamarin.forms 应用程序中,我有一个作为源的列表视图:

var tr = JsonConvert.DeserializeObject<Items>(content);
myList.ItemsSource = tr.cars;

此数据的类:

public class Items
{
    public List<Car> cars { get; set; }
}
public class Car
{
    public int id { get; set; }
    public string company { get; set; }
    public Owner owners { get; set; }
}
public class Owner
{
    public int o_id { get; set; }
    public string o_surname { get; set; }
}

我想通过单击列表视图中的对象来查看更多信息。我在 xaml ItemSelected="OnSelection" 和代码中使用它:

void OnSelection(object sender, ItemTappedEventArgs e)
        {
        Car myitem = sender as Car;
        DisplayAlert("ItemSelected", $"{myitem.company.ToString()}", "Ok");
        }

这给了我错误:对象引用未设置为对象的实例。'

我找到了一些关于所选项目的信息,但没有一个能解决我的问题。

【问题讨论】:

  • 使用 e.Item 获取选中的项目 eg:- Car myItem = e.Item as Car;
  • @HamidShaikh 不幸的是,这个解决方案也给出了同样的错误:对象引用未设置为对象的实例
  • 分享你的 xaml 代码
  • 请也分享您的部分 JSON 文件!

标签: c# xaml listview xamarin xamarin.forms


【解决方案1】:

通过sender 获取项目的另一种方式供您参考。

更改:

Car myitem = sender as Car;

收件人:

Car myitem = (Car)((ListView)sender).SelectedItem;

结果:

【讨论】:

    【解决方案2】:

    ItemTappedEventArgs 包含对您的项目的引用

    void OnSelection(object sender, ItemTappedEventArgs e)
    {
        Car myitem = e.Item as Car;
        DisplayAlert("ItemSelected", $"{myitem.company.ToString()}", "Ok");
    }
    

    【讨论】:

      猜你喜欢
      • 2017-02-04
      • 2014-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      • 2017-08-23
      • 2020-12-06
      • 2018-03-10
      相关资源
      最近更新 更多