Wpf自定义用户控件mouseleftButtonDown捕获区域

时间:2012-05-23 12:55:03

标签: wpf vb.net xaml

单击它时,我有一个带有事件处理程序的自定义控件。一切正常,事件被解雇了。

    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

我不能在我的customcontrol周围使用另一个元素,因为我也在所有不同类型的控件上使用了这个MouseLeftButtonDown。 我无法弄清楚cu.MouseLeftButtonDown事件的边界如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

堆栈面板的大小有些奇怪。这就像汽车财产的规模不小。我设法像这样修理它。当鼠标进入时我把:

 layoutroot.ClipToBounds = False 

这允许我显示控件之外的内容。 当鼠标离开时我使用:

 layoutroot.ClipToBounds = True

要绑定的剪辑会以某种方式强制StackPanel缩小尺寸。