Frage

Ich habe eine Listview, dass Sie eine Zeile / Element auswählen auf. Dies ist mit einem Datatrigger verbunden, die auf der Zeile ein Bild anzeigt. Das Bild sollte nur dann angezeigt werden, wenn die Zeile ausgewählt ist.

Dieser Teil funktioniert gut, aber wenn Sie den Fokus auf etwas bewegen sonst, wie ein Textfeld oder ein messagebox angezeigt wird, verliert der ListViewItem auf der Reihe also die Highlight Fokus wird nicht mehr angezeigt. Das Problem ist, dass mein Bild noch bleibt. Es sollte versteckt / ausgeblendet werden, wenn die Listenansicht den Fokus verliert ... Es funktioniert gut, wenn Sie eine anderes Element / Zeile auf der Listenansicht wählen.

Kann jemand auf diese bitte helfen?

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

Viele Grüße

TravisPUK

War es hilfreich?

Lösung

Ich glaube, Sie verwechseln IsSelected und IsFocused.

Experimentieren Sie mit Ihrem Trigger Bindung an IsFocused statt IsSelected Ihr gewünschtes Ergebnis zu erhalten.

Wenn ich richtig verstehe, wollen Sie nur das Bild sichtbar sein, wenn beide IsSelected und IsFocused wahr sind, sonst verborgen.

Eine Möglichkeit, dies zu tun ist, Standard-Sichtbarkeit auf Sichtbar zu setzen, und dann zwei Trigger hinzufügen, die Sichtbarkeit auf Verborgen ein. Ein Auslöser für IsSelected = False, und einen anderen Auslöser für IsFocused = False

oder das Gegenteil, Standard-Sichtbarkeit auf Verborgen, und verwenden Sie einen Multitrigger mit IsSelected = True und IsFocused = True es einstellt Sichtbarkeit auf Sichtbar

Andere Tipps

@Bubblewrap,

Danke für die Information, das ist ziemlich gut, um das Problem bekommt. Wie pro unten hatte ich in beiden Szenarien hinzufügen, wie die Standard-Effekt zu nehmen scheint nicht ... aber ich habe nicht die Multitrigger-Methode versuchte noch, später tun wird.

Das ist, was ich mit am Ende landete.

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

Danke für Ihre Hilfe, das wird mir über meine Frage bekommen jetzt. Ich denke, dass meine IsEnabled Trigger wahrscheinlich überflüssig ist jetzt aber.

Danke

TravisPUK

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top