0

クリックすると、イベント ハンドラーを持つカスタム コントロールがあります。すべてが機能し、イベントが正しく発生します。

    AddHandler (cu.MouseLeftButtonDown), AddressOf Me.DoSomething

コントロールのサイズが変更されて追加情報が表示されると、コントロールが展開されます。また、ユーザーがボタンを押すと折りたたまれます。これは問題なく動作します。しかし、拡張領域があった場所をクリックすると、そのコントロールでマウスの左ボタンダウンが発生します。展開された要素で IsHitTestVisible を false に設定しようとしましたが、うまくいきませんでした。ここにいくつかのxamlがあります...

 <UserControl x:Class="MyCustomControl">
     <StackPanel>
       <Grid>
          'Stuff thats always visible
       </Grid>
    <Border IsHitTestVisible="False"   Grid.Row="1" HorizontalAlignment="left" BorderThickness="1" VerticalAlignment="top" x:Name="overView" Background="#EEEEEE" Visibility="Hidden" Margin="-325,-95,0,0" Width="auto" Height="auto" Padding="5,5,5,5" BorderBrush="#999999" CornerRadius="3,3,3,3">
        <Border IsHitTestVisible="False" x:Name="myBorder" Margin="1" Width="300" Height="225" BorderThickness="1" BorderBrush="#999999" Background="#DDDDDD" CornerRadius="3,3,3,3" HorizontalAlignment="Left" VerticalAlignment="Top">
            <Rectangle IsHitTestVisible="False" x:Name="rtgOverView">
            </Rectangle>
        </Border>
    </Border>
   </StackPanel>
 </UserControl>

このコードを使用すると、概要が表示されます

  overView.Visibility = Windows.Visibility.Visible

これを使うと隠れる

  OverView.Visibility = Windows.Visibility.Collapsed

四角形を視覚ブラシで塗りつぶします。これは、コントロールがロードされたときに発生します。

   rtgOverView.Fill = visual 

overView は、このようにコード ビハインドに配置されます

    If x > 350 Then
        overView.HorizontalAlignment = Windows.HorizontalAlignment.Left
        overView.Margin = New Thickness(-325, -95, 0, 0)
    Else
        overView.HorizontalAlignment = Windows.HorizontalAlignment.Right
        overView.Margin = New Thickness(0, -95, -300, 0)
    End If

この MouseLeftButtonDown もすべての異なる種類のコントロールで使用するため、customcontrol の周りに別の要素を使用することはできません。これを修正するために cu.MouseLeftButtonDown イベントの境界がどのように機能するのかわかりません。

4

1 に答える 1

1

スタックパネルのサイズに何か奇妙なことが起こっていました。auto プロパティがサイズを小さくしないようです。こんな感じで修正できました。マウスが入ると、次のように入力します。

 layoutroot.ClipToBounds = False 

これにより、コントロールの外側にコンテンツを表示できます。マウスが離れたら、次を使用します。

 layoutroot.ClipToBounds = True

バインドするクリップは、どういうわけか、StackPanel のサイズを小さくします。

于 2012-05-24T08:08:14.690 に答える