网格中控件周围的WPF可点击区域

时间:2013-05-14 00:41:19

标签: c# .net wpf draggable

我在为表单制作自定义标题栏时遇到问题。它将包含一个搜索文本框以及一些滑块,如下图所示: Example image 现在,想象一下作为标题栏 - 所有不属于控件本身的部分(由边框元素和滑块包围的文本框)都需要可以用于拖动目的。

我试过这个:

<Grid MouseDown="TitleGridMouseDown">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="135"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="200"/>
        </Grid.ColumnDefinitions>
        <Slider Grid.Column="1" Margin="5 15 5 0" Width="100"  MouseDown="TitleGridMouseDown"/>
        <Slider Grid.Column="2" Margin="5 15 5 0"/>
        <Border Grid.Column="3" CornerRadius="10" BorderThickness="1" BorderBrush="White" Width="180" Height="20" Background="White">
            <TextBox Background="Transparent" BorderThickness="0" Height="20"/>
        </Border>

    </Grid>

但是没有用。两个滑块之间有一小部分,就像几个像素区域一样,实际上可以工作(DragMove();在事件本身中)。我在WPF中没有太多经验这种类型的东西,但我觉得这个区域缩小到控制范围。例如,如果我将border对象放入按钮并尝试将事件绑定到按钮,则不会发生任何变化。

我该如何处理?

1 个答案:

答案 0 :(得分:8)

此处的问题是您要捕获网格元素上的MouseDown事件。由于您的网格没有背景设置,因此默认为null。 MouseDown事件不会被提升。可以想象它正在通过网格而没有实际击中它。顶部网格上的Background=Transparent可以解决问题。