获取对 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>

我得到了一个数据名称联系人表,这是我的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];

  1. 在 WPF 中,数据绑定以完全不同的方式处理,如与温福斯相比。

  2. 如果您可以遵循此示例,您应该能够完成你需要什么,但你需要修改你的代码。

  3. 在您的情况下,ListView 中的每个项都是一个Contact对象,因此 您需要将 ListView 的 SelectedItem 属性绑定到 属性 say (选定联系人) 在实现 INotifyPropertyChanged .

    私人联系_selectedContact;

    公共联系人 已选择联系人 { 获取 { 返回this._selectedContact; }

            set
            {
                if (value != this._selectedContact)
                {
                    this._selectedContact= value;
                    NotifyPropertyChanged();
                }
            }
        }
    
  4. 忠告:如果您没有使用数据绑定和属性更改通过 INotifyPropertyChanged 功能,那么您仍然生活在 WindowsForm 世界的旧世界中。我会请你学习它并在你的代码中进行调整。

最新更新