C# 如何在WPF中获取ListViewItem的索引值?
我正在制作一个CRUD通讯簿,以熟悉WPF应用程序 我有三个类:AllContacts、User和SingleContact。AllContacts使用ObservableCollection将所有现有联系人作为用户对象保存。SingleContact只是用来在一个新窗口中显示信息,实际上我不太确定这是否必要,你对此有何想法 我将在下面详细解释: 我使用ListView显示窗口_1 XAML:AllContacts中的所有联系人,如图所示:C# 如何在WPF中获取ListViewItem的索引值?,c#,wpf,xaml,C#,Wpf,Xaml,我正在制作一个CRUD通讯簿,以熟悉WPF应用程序 我有三个类:AllContacts、User和SingleContact。AllContacts使用ObservableCollection将所有现有联系人作为用户对象保存。SingleContact只是用来在一个新窗口中显示信息,实际上我不太确定这是否必要,你对此有何想法 我将在下面详细解释: 我使用ListView显示窗口_1 XAML:AllContacts中的所有联系人,如图所示: <ListView Name="lbUsers"
<ListView Name="lbUsers" DisplayMemberPath="Name"
ItemContainerStyle="{StaticResource ListView}"
AlternationCount="2" DockPanel.Dock="Bottom"
BorderThickness="0" Margin="0,4">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}"
Width="150"></GridViewColumn>
<GridViewColumn Header="Phone Number"
DisplayMemberBinding="{Binding PhoneNumber}"
Width="150"></GridViewColumn>
<GridViewColumn Header="Favorite"
DisplayMemberBinding="{Binding FavoriteStr}"
Width="95"></GridViewColumn>
</GridView>
</ListView.View>
</ListView>
但是,当我在上面的代码中创建新的SingleContact对象时,我不确定如何获得在Window_1 XAML:AllContacts中单击的联系人的值,并将用户对象值传递到Window_2 class:SingleContact中
我如何优雅地做到这一点
提前谢谢 这是我以前写过的一个类似的应用程序。基本上,您正在调用一个命令,我正在使用mvvmlight,并将所选的练习作为参数传递
<ListBox x:Name="LastExercises_ListView"
ItemsSource="{Binding FilteredCollection}"
SelectedItem="{Binding SelectedExercise, UpdateSourceTrigger=PropertyChanged}"
ToolTip="Double click to edit"
>
<ListBox.ContextMenu>
<ContextMenu>
<MenuItem Header ="Edit Exercise"
Command="{Binding EditExercise_Command}"
CommandParameter="{Binding SelectedExercise}"
/>
<MenuItem Header ="Delete Exercise"
Command="{Binding DeleteExercise_Command}"
CommandParameter="{Binding SelectedExercise}"
/>
</ContextMenu>
</ListBox.ContextMenu>
首先,您需要更改将显示联系人的构造函数或窗口,以便它可以显示什么,或者您可以添加另一个 然后,在初始化窗口时,需要按如下方式传递listView的选定项:
private void ListViewItem_MouseDoubleClick(object sender, RoutedEventArgs e)
{
SingleContact contactIndex = new SingleContact((User)this.lbUsers.SelectedItem);
//if SingleContact is the window
contactIndex.Show();
}
说明:
(User)this.lbUsers.SelectedItem;
用户要将所选项目强制转换为类对象,现在在window2中,您可以根据需要显示所选项目。这是针对当前窗口lbUsers的。SelectedItem是访问listview中所选项目的代码
希望这能有所帮助。谢谢,这确实有效!之后如何在SingleContact窗口上显示信息?我在该窗口中不再有lbUsers了。@susieloo\uuu抱歉,晚餐:D,您需要创建一个可以显示您的对象的控件,如另一个listview或datagrid。。。
private void ListViewItem_MouseDoubleClick(object sender, RoutedEventArgs e)
{
SingleContact contactIndex = new SingleContact((User)this.lbUsers.SelectedItem);
//if SingleContact is the window
contactIndex.Show();
}
(User)this.lbUsers.SelectedItem;