Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf自定义用户控件mouseleftButtonDown捕获区域_Wpf_Vb.net_Xaml - Fatal编程技术网

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

Wpf自定义用户控件mouseleftButtonDown捕获区域,wpf,vb.net,xaml,Wpf,Vb.net,Xaml,我有一个自定义控件,当您单击它时,它带有一个事件处理程序。一切正常,活动正常进行 AddHandler (cu.MouseLeftButtonDown), AddressOf Me.DoSomething 当控件调整大小以显示一些额外信息时,它将展开。当用户显示按钮时,它也会崩溃。这个很好用。但现在,当我单击扩展区域以前所在的位置时,它仍然会在该控件上单击鼠标左键向下。我曾尝试在展开的元素上将IshtestVisible设置为false,但没有成功。这里有一些xaml <Use

我有一个自定义控件,当您单击它时,它带有一个事件处理程序。一切正常,活动正常进行

    AddHandler (cu.MouseLeftButtonDown), AddressOf Me.DoSomething
当控件调整大小以显示一些额外信息时,它将展开。当用户显示按钮时,它也会崩溃。这个很好用。但现在,当我单击扩展区域以前所在的位置时,它仍然会在该控件上单击鼠标左键向下。我曾尝试在展开的元素上将IshtestVisible设置为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.Collapsed
我用可视化画笔填充矩形。加载控件时会发生这种情况

   rtgOverView.Fill = visual 
概述在代码隐藏中的位置如下所示

    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事件的边界是如何解决这个问题的

stackpanel的大小有点奇怪。就像“自动”属性没有缩小它的大小一样。我就这样把它修好了。当鼠标进入时,我将:

 layoutroot.ClipToBounds = False 
这允许我显示控件之外的内容。 当鼠标离开时,我使用:

 layoutroot.ClipToBounds = True
绑定的剪辑以某种方式强制StackPanel变小

 layoutroot.ClipToBounds = True