我目前正在与另一场WPF斗争作斗争,即mouseEvents。
我基本上有一个非常简单的控件(Border
包含一个Grid
,它本身有一些TextBlocks
)。我试图实现一个简单的行为:双击应该将控件转换为编辑模式(实际上隐藏TextBlocks
与TextBoxes
绑定到相同的数据。
没什么特别的,对吗?好吧,我还在挣扎。当我点击一个控件时(例如,单击一个文本块),链接到MouseDoubleClick
的{{1}}就会触发。如果我点击UserControl
之间的空格,则不会触发任何内容。甚至不是TextBlocks
。
我怎样才能使它能够捕获每一次鼠标?我认为将MouseDown
事件与MouseDown
相关联应该会抓住边框上的每次点击,但是......最终没有抓住边框空白部分的点击次数。
以下是我为您制作的一些草案代码:
XAML:
Border
代码背后:
<StackPanel Orientation="Vertical">
<Border Height="400" Width="400" HorizontalAlignment="Center" VerticalAlignment="Center" BorderBrush="Black" BorderThickness="2"
MouseDown="Border_MouseDown" MouseUp="Border_mouseUp">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Text="BLUFF" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="BLUFF" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="BLUFF" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="BLUFF" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="BLUFF" Grid.Column="1" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="BLUFF" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="BLUFF" Grid.Column="2" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="BLUFF" Grid.Column="2" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Text="BLUFF" Grid.Column="2" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Border>
<TextBlock Height="100" Width="300" HorizontalAlignment="Center" TextAlignment="Center" x:Name="thetext" Visibility="Collapsed"
Foreground="White" Background="Red" Text="CLICKED!" />
</StackPanel>
现在尝试点击其中一个&#34; BLUFF&#34;文本:A&#34;点击&#34;文字将出现。尝试点击TextBlocks之间的其他地方:没有任何事情发生。
谢谢!
答案 0 :(得分:31)
<StackPanel Background="Transparent" ...
或
<Border Background="Transparent" ...
应该做的伎俩...
这使网格变得透明,但鼠标点击却可见。
查看here表单了解更多信息。
还有一些其他的情况,你必须使用PreviewXXX
- 事件,这是一个儿童元素&#34;吞下&#34;事件发生了,但在你的情况下,上面的内容可能是你要找的东西。