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 に答える