3

我有一个控件,当 IsMouseOver 使用触发器设置为 true 时,它​​会扩展。在该控件中,有一些文本框具有一些基本验证。我的问题是,当发生验证错误并且用户将鼠标悬停在文本框周围的红色边框上时(几乎保证在用户将鼠标移动到文本框的中心以更改值时发生), IsMouseOver 设置为 false 并且控件关闭.

文本框的验证错误:

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

触发以显示控制:

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

更新: 当我右键单击文本框并打开上下文菜单时,IsMouseOver 也设置为 False

4

1 回答 1

0

在上下文菜单的情况下,事情很清楚:它是一个不同的窗口(处于低级别),因此您的控件可能无法检测到任何“尽管”它。同样,WPF 中的验证错误以复杂而令人费解的方式显示,并且足以说明它们也不是您的控件的一部分。

我建议在您的场景中使用焦点事件;真的需要鼠标悬停吗?可能有一些方法可以让它工作......

于 2010-09-25T18:24:27.257 回答