我有一个与ObservableCollection绑定的ListView。 ListView的Itemtemplate如下:
<ListView ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" PreviewMouseLeftButtonUp="ListViewClicked" PreviewKeyDown="NameBox_KeyDown">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="./Resources/DeleteIcon.png"/>
<TextBox Text="{Binding Path=Name}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
这样我就可以让用户选择更改元素的名称,或者从列表中删除它。我通过附加到ListView的两个事件处理程序在代码后面处理这两个操作。
问题是当我单击TextBox时,ListView的SelectedItems属性不会改变,它指向最后选择的项目。当我单击图像或选择更改周围的空闲空间时。
现在我有两个问题:
答案 0 :(得分:2)
解决此问题的一种方法是将Trigger
设置为在键盘焦点位于IsSelected
ListViewItem
<ListView ... SelectionMode="Single">
<!-- .... -->
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<Trigger Property="IsKeyboardFocusWithin" Value="True">
<Setter Property="IsSelected" Value="True"/>
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
</ListView>