我在为表单制作自定义标题栏时遇到问题。它将包含一个搜索文本框以及一些滑块,如下图所示: 现在,想象一下作为标题栏 - 所有不属于控件本身的部分(由边框元素和滑块包围的文本框)都需要可以用于拖动目的。
我试过这个:
<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对象放入按钮并尝试将事件绑定到按钮,则不会发生任何变化。
我该如何处理?
答案 0 :(得分:8)
此处的问题是您要捕获网格元素上的MouseDown
事件。由于您的网格没有背景设置,因此默认为null。 MouseDown
事件不会被提升。可以想象它正在通过网格而没有实际击中它。顶部网格上的Background=Transparent
可以解决问题。