【发布时间】:2019-08-14 05:57:23
【问题描述】:
我有一个列表视图,其中填充了来自 ItemsSource 的术语列表。 .Name 属性是列表视图上显示的文本。我正在尝试将 .Id int 属性保存到一个变量中,以便我可以从另一个表单访问它。本质上我想要它,这样当用户点击列表上的一个项目时,它会打开一个表单并使用与被点击的项目关联的列表实例填充它。
如果列表视图中填充了 ID 为 1、2、3 和 4 的 Book1、Book2、Book3 和 Book4,那么如果用户点击 Book2,我希望将 SelectedBook 变量设置为 2 的 .Id 属性。然后,当另一个表单打开时,该表单将从 sqlite 数据库中提取适当的书籍实例并使用该书籍的信息填充字段。
我一直在尝试使用 ListView 的 ItemSelected 属性执行此操作,但收到此错误“System.NullReferenceException:对象引用未设置为对象的实例。”。
这是我使用的代码:
public void OnSelectedItem(object sender, EventArgs args)
{
Book myBook = sender as Term;
App.BookRep.SelectedBook = myBook.Id;
}
我最初在列表视图中填充了按钮(这是我的偏好),但是当我这样做时似乎没有使用 ListView 的 SelectedItem 属性。我尝试使用 Button 的 Clicked 属性,但找不到以这种方式获取所选书籍的 Id 的方法。我做错了什么还是有更好的方法来做这件事?
【问题讨论】:
-
您可以从 EventArgs 属性中获取所选项目,然后您可以将其投射到模型 Book 并从那里获取 ID 属性。
-
为了澄清,您可以从 args 参数中获取 SelectedItem。将其转换为 Book 模型应该会为您提供所选视单元的绑定。
-
@SparshaBhattarai 感谢您的回复!我一直在尝试实现此功能的不同组合,但未能成功。您将如何将 args 转换为 book 模型?
-
只需使用您对发件人完成的演员阵容,而不是使用选定的项目。 var curItem = args.SelectedItem as Book;然后将 curItem.ID 属性用于其余部分。
标签: listview xamarin.forms selecteditem