コンテキストメニューまたは検証エラーを超えてfalseを返すismouseover?

StackOverflow https://stackoverflow.com/questions/3788514

  •  05-10-2019
  •  | 
  •  

質問

トリガーを使用してIsMouseOverがTrueに設定されたときに拡張するコントロールがあります。そのコントロール内には、基本的な検証があるテキストボックスがいくつかあります。私の問題は、検証エラーが発生し、ユーザーがテキストボックスの周りの赤い境界線にマウントすると(ユーザーが値を変更するためにマウスをテキストボックスの中心に移動するにつれて発生するためにほとんどが発生することです) 。

テキストボックスの検証エラー:

<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に設定されています

役に立ちましたか?

解決

コンテキストメニューの場合、事態はかなり明確です。それは別のウィンドウ(低レベルで)であるため、コントロールは「ただし」何かを検出することはできません。同様に、WPFの検証エラーは複雑で複雑な方法で表示され、実際にはあなたのコントロールの一部ではないと言うだけで十分です。

シナリオにフォーカスイベントを使用することをお勧めします。マウスオーバーは本当に必要ですか?しかし、それを機能させる方法がいくつかあるかもしれません...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top