WPF ListView 选中一行中的TextBox 即能选中TextBox所在当前行
画面上有一ListView,其中有一列用DataTemplate设置为了TextBox,并进行了数据绑定,其他列为TextBlock。现象是在用鼠标点击TextBlock...
画面上有一ListView,其中有一列用DataTemplate设置为了TextBox,并进行了数据绑定,其他列为TextBlock。现象是在用鼠标点击TextBlock的单元格时,所处的行可以被选中,而点击TextBox的时候,焦点被设置到到TextBox上,所在行却没有处于选中状态。我想请问如何才能在点击TextBox的时候取得TextBox所在行的Index,并设置为选中状态呢?
展开
1个回答
展开全部
换一种思维考虑,如果我们能得到所在行的index,那么就可以通过这个index选中我们要选的行。
ListView.SelectedIndex = index ; 不过我不支持这种做法,因为index不能直接获取呢。
我的做法如下:
<DataTemplate>
<TextBox Width="100" Height="20" GotFocus="TextBox_GotFocus"/>
</DataTemplate>
为模板里的textbox添加gotfocus事件
private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
var aa = (sender as TextBox).DataContext;
listView1.SelectedItem = aa;
}
获取textbox所在行所绑定的数据实体 然后再设置其选中状态。如果需要index的话,可以通过循环来获取这个实体是实体集合的第几项即可。
ListView.SelectedIndex = index ; 不过我不支持这种做法,因为index不能直接获取呢。
我的做法如下:
<DataTemplate>
<TextBox Width="100" Height="20" GotFocus="TextBox_GotFocus"/>
</DataTemplate>
为模板里的textbox添加gotfocus事件
private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
var aa = (sender as TextBox).DataContext;
listView1.SelectedItem = aa;
}
获取textbox所在行所绑定的数据实体 然后再设置其选中状态。如果需要index的话,可以通过循环来获取这个实体是实体集合的第几项即可。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询