WPF mouse down和mouseleftbuttonup事件冲突.1停用另一个.(无边界应用程序)
本文关键字:另一个 边界 应用程序 down mouse mouseleftbuttonup 冲突 事件 WPF | 更新日期: 2023-09-27 18:24:13
我有一个WPF应用程序,它是无边界的,所以我需要为窗口函数创建自己的按钮,并需要添加MouseDown
事件,以允许应用程序在单击和拖动时移动。文件大纲为:
Window网格帆布网格stackPanel-这是我的窗口关闭最大和最小按钮所在的位置。
这是StackPanel
:的代码
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top" Canvas.Left="689" Canvas.Top="5">
<TextBlock x:Name="Minimize" Text="0" FontFamily="Webdings" Foreground="Black" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0" MouseLeftButtonUp="Minimize_MouseLeftButtonUp"/>
<TextBlock x:Name="Maximize" Text="1" FontFamily="Webdings" Foreground="Black" Margin="5,0,0,0" VerticalAlignment="Top" HorizontalAlignment="Right" MouseLeftButtonUp="Maximize_MouseLeftButtonUp"/>
<TextBlock x:Name="Close" Text="r" FontFamily="Webdings" Foreground="Black" Margin="5,0,0,0" VerticalAlignment="Top" HorizontalAlignment="Right" MouseLeftButtonUp="Close_MouseLeftButtonUp"/>
</StackPanel>
当我添加MouseDown
dragmove方法时,它会取消StackPanel
,并且不允许我关闭应用程序,如上面的代码所示。我认为文件大纲需要一个特定的顺序?需要一些帮助,也许可以理解它是如何对event handlers
进行优先级排序的,以及我是否需要重新排列我的文档大纲。
调用.DragMove
会阻止MouseLeftButtonUp
在TextBlock
上执行,但是按钮的.Click
事件应该能正常工作。
如果我没有记错的话,Button的MouseDown
事件不会出现在UI树中,因此父控件(在本例中为StackPanel)的MouseDown
事件不会被执行。
由于您正在使用不同的UI寻找按钮的功能,我建议您只使用覆盖了Template
的<Button>
。
例如,
<Style x:Key="MyButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock Text="{TemplateBinding Button.Content}"
FontFamily="Webdings" Foreground="Black">
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
它可以这样使用:
<Button x:Name="Minimize" Text="0"
Style="{DynamicResource MyButtonStyle}"
Click="Minimize_Click" ... />