[英]ListView.SelectedItems does not change when clicking a TextBox in the ItemTemplate
我有一个与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属性没有更改,它指向最后一个选定的项目。 当我单击图像或选择周围的可用空间时,更改。
现在我有两个问题:
解决此问题的一种方法是,当键盘焦点位于ListViewItem
内时,将Trigger
设置为Set IsSelected
。
<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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.