[英]getting access to the listview items in C# WPF
我在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>
我得到了一個數據名稱為Contacts的表,這是我的addContact函數:
ContactDBEntities db = 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中,與Winforms相比,數據綁定的處理方式完全不同。
如果可以遵循此示例 ,則應該能夠完成所需的工作,但是需要修改代碼。
在您的情況下,ListView中的每個項目都是一個Contact
對象,因此您需要將ListView的SelectedItem
屬性綁定到實現INotifyPropertyChanged
的類中的屬性(SelectedContact)。
私人聯系人_selectedContact;
公共聯系人SelectedContact {獲取{返回this._selectedContact; }
set { if (value != this._selectedContact) { this._selectedContact= value; NotifyPropertyChanged(); } } }
建議:如果您不使用數據綁定和通過INotifyPropertyChanged功能更改屬性,那么您仍然生活在WindowsForm世界的舊世界中。 我要求您學習它並適應您的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.