Pregunta

I tiene un control que se expande cuando IsMouseOver se establece en true usando un disparador. Dentro de ese control, hay algunos cuadros de texto que tienen alguna validación básica. Mi problema es que cuando se produce un error de validación y los ratones de usuario más de la frontera roja alrededor de la caja de texto (casi guarenteed que suceda ya que el usuario mueve el ratón para centro de cuadro de texto para cambiar el valor), el IsMouseOver se establece en los cierres de control falso y .

Error de validación para los cuadros de texto:

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

gatillo para control de espectáculos:

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

ACTUALIZACIÓN: IsMouseOver también se está establecida en False cuando haga clic en un cuadro de texto y abrir el menú contextual

¿Fue útil?

Solución

En el caso del menú contextual, las cosas son bastante claras: es una ventana diferente (en un nivel bajo), por lo que su control no puede posiblemente detectar nada 'aunque' la misma. Del mismo modo, los errores de validación de WPF se muestran de una manera complicada y enrevesada, y basta con decir que no son realmente parte de su control tampoco.

Me gustaría sugerir el uso de eventos de foco para su escenario; está por encima del ratón realmente necesario? Puede haber algunas maneras de hacer que funcione, aunque ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top