WPF ListViewItemはフォーカスイベントを失いました-イベントで取得する方法は?

StackOverflow https://stackoverflow.com/questions/466555

質問

行/アイテムを選択するリストビューがあります。これは、行に画像を表示するデータトリガーにリンクされています。画像は、行が選択されている場合にのみ表示されます。

この部分は正常に機能しますが、テキストボックスなどの別の場所にフォーカスを移動するか、メッセージボックスが表示されると、listviewitemはフォーカスを失います。つまり、行のハイライトは表示されなくなります。問題は、私の画像がまだ残っていることです。リストビューがフォーカスを失うと、非表示/折りたたみになるはずです...リストビューで別のアイテム/行を選択すると、正常に動作します。

これについて誰か助けてもらえますか?

<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>

よろしく

TravisPUK

他のヒント

@Bubblewrap、

情報をありがとう、これは問題をかなりうまく回避しました。以下のように、デフォルトが有効にならないように両方のシナリオに追加する必要がありました...しかし、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トリガーはおそらく冗長になっていると思います。

ありがとう

TravisPUK

scroll top