3

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

我试过这个:

<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 中没有太多此类事情的经验,但对我来说感觉就像该区域缩小到控件一样。例如,如果我将边框对象放入按钮并尝试将事件绑定到按钮,则不会发生任何变化。

我应该如何处理这个?

4

1 回答 1

10

您的问题是您想要捕获MouseDown网格元素上的事件。由于您的网格没有设置背景,因此默认为空。该MouseDown事件不会被引发。把它想象成它正在穿过网格而不实际击中它。Background=Transparent顶部网格上的A应该可以解决问题。

于 2013-05-14T10:03:58.970 回答