2

編集:質問の元の前提が間違っていたので、質問を修正しました:

基本的に、マウスが含まれているユーザーコントロールの上にある場合にのみ、ボタンが表示されるようにします。ここに私が持っているものの単純化されたバージョンがあります:

<UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="MyNamespace.MyUserControl"
    x:Name="myUserControl">
    <Textbox>Some Text</Textbox>
    <Button Visibility="{Binding ElementName=myUserControl, Path=IsMouseOver, Converter={StaticResource mouseOverVisibilityConverter}}" />
</UserControl>

これは、マウスがテキスト ボックス上にある場合に機能しますが、ユーザー コントロールの他の場所には機能しません。

4

3 に答える 3

6

トーマスが私の元の質問で誤った仮定を指摘し、それがこの投稿で機能しなかった本当の理由を発見するように導いた後、私は質問を修正しました。

基本的に、ユーザーコントロールには(透明ではなく)nullの背景があり、IsHitTestVisibleがtrueに設定されていても、マウスからは見えないように見えるため、解決策はユーザーコントロールにBackground="Transparent"を追加することでした。

于 2009-06-06T17:58:28.113 に答える
1

そのプロパティを派生クラスに実装できます。私は以前にこの種のことをしなければなりませんでした。

Private _IsMouseOver As Boolean = False

Protected Overrides Sub OnMouseEnter(ByVal sender As Object, ByVal e As MouseEventArgs)
     _IsMouseOver = True
     MyBase.OnMouseEnter(sender, e)
End Sub

Protected Overrides Sub OnMouseLeave(ByVal sender As Object, ByVal e As MouseEventArgs)
     _IsMouseOver = False
     MyBase.OnMouseLeave(sender, e)
End Sub

Public ReadOnly Property IsMouseOver As Boolean()
    Get
        Return _IsMouseOver
    End Get
End Property
于 2009-06-06T15:47:31.133 に答える