Frage

Ich habe eine Kontrolle, die sich ausdehnt, wenn IsMouseOver auf true mit einem Trigger gesetzt ist. Innerhalb dieser Kontrolle, gibt es einige Textfelder, die einige grundlegende Validierung haben. Mein Problem ist, dass, wenn ein Validierungsfehler auftritt und die Benutzer mit der Maus über die roten Rahmen um die Textbox (fast guarenteed als Benutzer passieren die Maus bewegt Zentrum von Textbox den Wert zu ändern), die IsMouseOver auf false und die Steuer schließt gesetzt wird .

Validierungsfehler für Textfelder:

<Style TargetType="{x:Type TextBox}">
    <Style.Triggers>
        <Trigger Property="Validation.HasError" Value="True">
            <Setter Property="ToolTip" Value="{Binding 
                Path=(Validation.Errors)[0].ErrorContent, 
                RelativeSource={x:Static RelativeSource.Self}}" />
        </Trigger>
    </Style.Triggers>
</Style>

Trigger zu zeigen Steuerung:

<DataTrigger Binding="{Binding ElementName=TabControl_TabPanel, Path=IsMouseOver}" Value="True">
    <Setter Property="Visibility" Value="Visible" />
</DataTrigger>

UPDATE: IsMouseOver wird auch auf False festgelegt wurden, wenn ich ein Textfeld der rechten Maustaste das Kontextmenü öffnen

War es hilfreich?

Lösung

Im Falle des Kontextmenüs, sind die Dinge ziemlich klar: es ist ein anderes Fenster (auf niedrigem Niveau), so dass Ihre Steuerung kann möglicherweise nichts erkennen ‚obwohl‘ es. Ebenso werden in einem komplizierten und gewundenen Weise Validierungsfehler in WPF angezeigt, und es genügt zu sagen, dass sie entweder nicht wirklich Teil Ihrer Kontrolle sind.

Ich würde vorschlagen, Fokus-Ereignisse für Ihr Szenario verwendet wird; ist mouse-over wirklich erforderlich? Möglicherweise gibt es einige Möglichkeiten, um es aber funktioniert ...

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