我的 XAML 中有这些代码行:
<ListView x:Name="ContactsList" MouseDoubleClick="ContactsList_MouseDoubleClick" HorizontalAlignment="Left" Height="453" Margin="10,10,0,0" VerticalAlignment="Top" Width="235" ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> <ListView.View> <GridView> <GridViewColumn Header="LastName" Width="110" DisplayMemberBinding="{Binding LastName}" /> <GridViewColumn Header="FirstName" Width="115" DisplayMemberBinding="{Binding FirstName}" /> </GridView> </ListView.View> </ListView>
我得到了一个数据名称联系人表,这是我的addContact功能:
ContactDBEntitiesdb = new ContactDBEntities();
Contact newContact = new Contact(); newContact.FirstName = FName.Text; newContact.LastName = LName.Text; newContact.Mobile = Mob.Text; newContact.Telephone = Tel.Text; newContact.Mail = Mail.Text; db.Contacts.Add(newContact); db.SaveChanges();
我的显示联系人功能是:
IQueryable<Contact> items = from c in db.Contacts where c.LastName.Contains(s) || c.FirstName.Contains(s) select c; ContactsList.ItemsSource = items.ToList();
我想要的只是知道用户在 ListView 中单击了哪个对象,以便我可以访问它的信息。 我应该使用以下功能吗? 如果我应该在里面写什么?
private void ContactsList_MouseDoubleClick(object sender, MouseButtonEventArgs e) { }
挂接 SelectionChanged 事件,以便在函数选择其他项时运行函数。 这样,无论函数使用何种输入设备(键盘箭头等),您的函数都将正常工作。
然后在您的函数中,只需读取包含所有选定索引集合的listView.SelectedIndices
。
如果您只想响应双击和单个项目,请继续使用 MouseDoubleClick 并通过以下方式获取您的项目: ListViewItem lvi = listView.SelectedItems[0];
-
在 WPF 中,数据绑定以完全不同的方式处理,如与温福斯相比。
-
如果您可以遵循此示例,您应该能够完成你需要什么,但你需要修改你的代码。
-
在您的情况下,ListView 中的每个项都是一个
Contact
对象,因此 您需要将 ListView 的SelectedItem
属性绑定到 属性 say (选定联系人) 在实现INotifyPropertyChanged
.私人联系_selectedContact;
公共联系人 已选择联系人 { 获取 { 返回this._selectedContact; }
set { if (value != this._selectedContact) { this._selectedContact= value; NotifyPropertyChanged(); } } }
-
忠告:如果您没有使用数据绑定和属性更改通过 INotifyPropertyChanged 功能,那么您仍然生活在 WindowsForm 世界的旧世界中。我会请你学习它并在你的代码中进行调整。