C# 当我在列表视图行内的文本框中编辑文本时,如何获取该行?

C# 当我在列表视图行内的文本框中编辑文本时,如何获取该行?,c#,wpf,xaml,C#,Wpf,Xaml,与标题状态一样,我想知道当我编辑作为该行/项目一部分的绑定TextBox时,如何获得该行/项目 似乎除非我手动选择前面的行,否则调用.SelectedIndex只会让我-1和。SelectedItem为null(从技术上讲,两者都是有意义的) 下面是我的列表视图的当前设置 <ListView x:Name="EmployeeListView" Height="108" Margin="10,10,0,0" VerticalAlig

与标题状态一样,我想知道当我编辑作为该行/项目一部分的绑定
TextBox
时,如何获得该行/项目

似乎除非我手动选择前面的行,否则调用
.SelectedIndex
只会让我
-1
。SelectedItem
null
(从技术上讲,两者都是有意义的)

下面是我的
列表视图的当前设置

<ListView x:Name="EmployeeListView" Height="108" Margin="10,10,0,0" VerticalAlignment="Top" Width="278" HorizontalAlignment="Left">
 <ListView.ItemContainerStyle>
  <Style>
   <Setter Property="Control.HorizontalContentAlignment" Value="Stretch"/>
   <Setter Property="Control.VerticalContentAlignment" Value="Stretch"/>
  </Style>
 </ListView.ItemContainerStyle>
 <ListView.View>
  <GridView>
   <GridViewColumn x:Name="nameColumn" Header="Name" Width="100">
    <GridViewColumn.CellTemplate>
     <DataTemplate>
      <TextBox x:Name="EmployeeNameTextBox" Margin="6,-1,-6,-1" Text="{Binding Name, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TextChanged="EmployeeNameTextBox_TextChanged"/>
     </DataTemplate>
    </GridViewColumn.CellTemplate>
   </GridViewColumn>
   <GridViewColumn x:Name="job_TitleColumn" Header="Job Title" Width="170">
    <GridViewColumn.CellTemplate>
     <DataTemplate>
      <TextBox x:Name="EmployeeJobTitleTextBox" Margin="-6,-1" Text="{Binding JobTitle, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" TextChanged="EmployeeJobTitleTextBox_TextChanged"/>
     </DataTemplate>
    </GridViewColumn.CellTemplate>
   </GridViewColumn>
  </GridView>
 </ListView.View>
</ListView>


如果有任何帮助,我们将不胜感激。

您可以调整物品容器的样式,以便在键盘焦点位于其中时选择物品

<ListView.ItemContainerStyle>
   <Style TargetType="{x:Type ListViewItem}">
      <Setter Property="Control.HorizontalContentAlignment" Value="Stretch"/>
      <Setter Property="Control.VerticalContentAlignment" Value="Stretch"/>
      <Style.Triggers>
         <Trigger Property="IsKeyboardFocusWithin" Value="True">
            <Setter Property="IsSelected" Value="True"/>
         </Trigger>
      </Style.Triggers>
   </Style>
</ListView.ItemContainerStyle>

在文本框的textchanged事件处理程序中,您可以获得文本框(发送方)的DataContext,它将是基础项


或者您可以使用VisualTreeHelper查找父ListViewItem。

我不知道这个答案在技术上是否更好,但我喜欢它的工作方式。