繁体   English   中英

单击ItemTemplate中的文本框时,ListView.SelectedItems不会更改

[英]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属性没有更改,它指向最后一个选定的项目。 当我单击图像或选择周围的可用空间时,更改。

现在我有两个问题:

  1. 有没有简单的方法来解决此问题?
  2. 是否可以获取其属性由TextBox公开的集合项的引用?

解决此问题的一种方法是,当键盘焦点位于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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM