.net WPF ListViewItem失去焦点事件-如何获得该事件?

.net WPF ListViewItem失去焦点事件-如何获得该事件?,.net,wpf,listview,datatrigger,listviewitem,.net,Wpf,Listview,Datatrigger,Listviewitem,我有一个列表视图,您可以在其中选择行/项。这链接到在行上显示图像的datatrigger。仅当选定行时才应显示图像 此部分工作正常,但是当您将焦点移动到其他位置(如文本框或显示消息框)时,listviewitem将失去焦点,即不再显示行上的突出显示。问题是我的形象仍然存在。当listview失去焦点时,它应该被隐藏/折叠。。。如果在listview上选择不同的项目/行,则可以正常工作 有人能帮忙吗 <Style x:Key="deleteImageStyle" TargetType="{x

我有一个列表视图,您可以在其中选择行/项。这链接到在行上显示图像的datatrigger。仅当选定行时才应显示图像

此部分工作正常,但是当您将焦点移动到其他位置(如文本框或显示消息框)时,listviewitem将失去焦点,即不再显示行上的突出显示。问题是我的形象仍然存在。当listview失去焦点时,它应该被隐藏/折叠。。。如果在listview上选择不同的项目/行,则可以正常工作

有人能帮忙吗

<Style x:Key="deleteImageStyle" TargetType="{x:Type Image}">
    <Setter Property="Source" Value="Resources/iconDelete.png" />
    <Setter Property="Margin" Value="0,2,5,0" />
    <Setter Property="Height" Value="16" />
    <Setter Property="Width" Value="16" />
    <Setter Property="HorizontalAlignment" Value="Right" />
    <Setter Property="VerticalAlignment" Value="Top" />
    <Setter Property="Cursor" Value="Hand" />
    <Style.Triggers>
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="True">
            <Setter Property="Visibility" Value="Visible"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="False">
            <Setter Property="Visibility" Value="Hidden"/>
        </DataTrigger>
        <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Visibility" Value="Hidden" />
        </Trigger>
    </Style.Triggers>
</Style>

问候


特拉维斯普克

我认为你混淆了我的当选和专注

尝试将触发器绑定到而不是IsSelected,以获得所需的结果

如果我理解正确,您只希望在IsSelected和IsFocused均为true时图像可见,否则将隐藏

一种方法是将默认可见性设置为Visible,然后添加两个将可见性设置为Hidden的触发器:一个触发器用于IsSelected=False,另一个触发器用于IsFocused=False

或者相反,将默认可见性设置为隐藏,并使用IsSelected=True和IsFocused=True的多触发器将其可见性设置为可见

谢谢你提供的信息,这很好地解决了这个问题。根据下面的内容,我不得不添加两种情况,因为默认设置似乎没有生效。。。不过,我还没有尝试过MultiTrigger方法,稍后会尝试

这就是我最后的结局

<Style.Triggers>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="True">
                <Setter Property="Visibility" Value="Visible"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsFocused}" Value="True">
                <Setter Property="Visibility" Value="Visible"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="False">
                <Setter Property="Visibility" Value="Hidden"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsFocused}" Value="False">
                <Setter Property="Visibility" Value="Hidden"/>
            </DataTrigger>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Visibility" Value="Hidden" />
            </Trigger>
        </Style.Triggers>

谢谢你的帮助,这将使我暂时摆脱我的问题。我认为我的IsEnabled触发器现在可能是多余的

谢谢


特拉维斯普克

你能把你目前掌握的密码公布出来吗?