wpf - WPF .Net Framwork 应用程序 - 主菜单下拉菜单在鼠标悬停时立即消失
问题描述
我对这个问题很生气。我有一个窗口,它有一个指定的标准,过去可以正常工作。它有 5 个选项,最右边的 2 个是立即点击操作,而左边的 3 个是单级下拉子菜单。出于某种原因,当我将鼠标从显示它们的顶级菜单中向下移动时,它们就开始消失了。我尝试过的任何事情都不会让它们重新出现。我在这个应用程序中有很多其他 Windows,所有这些都有类似的菜单,并且它们工作正常并且行为正常,只是这个窗口正在执行此操作。
我已经三次检查了 XAML 中菜单代码的语法,它在关闭 V 形等方面与其他窗口相同。
代码是:
...
<Menu
Grid.Column="1"
Grid.Row="1"
Height="30"
HorizontalAlignment="Center"
Width="428" Opacity="0.5" FontWeight="Bold" Foreground="{DynamicResource Black0}" IsHitTestVisible="True" Background="{DynamicResource Black2}">
<Menu.Items>
<MenuItem Header="_Linq Queries"
Margin="5"
Width="80"
Foreground="{StaticResource White0}">
<MenuItem Header="A/c Type 1 Only"
Background="Red"
Click="Linq1_Click"
Foreground="White"
IsHitTestVisible="True"
IsCheckable="false"/>
<MenuItem Header="A/c Type 2 Only"
Click="Linq2_Click"
Foreground="Black"
IsHitTestVisible="True" IsCheckable="False" StaysOpenOnClick="True"/>
<MenuItem Header="A/c Type 3 Only"
Click="Linq3_Click"
Foreground="Black"
IsCheckable="False" StaysOpenOnClick="True"/>
<MenuItem Header="A/c Type 4 Only"
Click="Linq4_Click"
Foreground="#FF971F1F"
IsCheckable="False" Background="{DynamicResource Gray3}" StaysOpenOnClick="True"/>
<MenuItem Header="Multi A/C Holders"
Click="Linq5_Click"
IsCheckable="False"
Foreground="Black"/>
<Separator />
<MenuItem Header="Show All Records"
Click="Linq6_Click"
IsCheckable="False"
Foreground="Black"/>
</MenuItem>
<MenuItem Header="Filtering"
Width="60"
Foreground="{StaticResource White1}">
<MenuItem Header="Trigger My Own Command"
Command="{Binding myCommandBinding}"
FontWeight="DemiBold"
Foreground="{StaticResource Black1}"
Background="#00FF00"
Style="{StaticResource MenuItemGreen}"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"
Width="290"
Margin="2"/>
<!--<Button Grid.ColumnSpan="2" Grid.Row="4" Command="{Binding InformationCommand}">Info</Button>-->
</MenuItem>
<MenuItem Header="Options"
Click="Options_Click"
Width="50"
Foreground="{StaticResource White2}">
<MenuItem Header="Export Bank Account Db => CSV"
Click="ExportBankCSV_Click"
FontWeight="DemiBold"
Foreground="{StaticResource Black1}"
Background="#00FF00"
Style="{StaticResource MenuItemGreen}"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"
Width="290"
Margin="2"/>
<MenuItem Header="Export Customers Db => CSV"
Click="ExportCustCSV_Click"
FontWeight="DemiBold"
Foreground="{StaticResource Black1}"
Background="#00FF00"
Style="{StaticResource MenuItemGreen}"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"
Width="290"
Margin="2" />
<MenuItem Header="Export Details Db => CSV"
Click="ExportDetCSV_Click"
FontWeight="DemiBold"
Foreground="{StaticResource Black1}"
Background="#00FF00"
Style="{StaticResource MenuItemGreen}"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"
Width="290"
Margin="2"/>
<Separator/>
<MenuItem Header="Import Bank Account Db from CSV"
Click="ImportBankCSV_Click"
FontWeight="DemiBold"
Background="#FF0000"
Foreground="White"
Style="{StaticResource MenuItemRed}"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"
Width="290"
Margin="2"
/>
<MenuItem Header="Import Customers Db from CSV"
Click="ImportCustCSV_Click"
FontWeight="DemiBold"
Foreground="White"
Background="#FF0000"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"
Style="{StaticResource MenuItemRed}"
Width="290"
Margin="2"
/>
<MenuItem Header="Import Details Db from CSV"
Click="ImportDetCSV_Click"
FontWeight="DemiBold"
Foreground="White"
Background="#FF0000"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"
Style="{StaticResource MenuItemRed}"
Width="290"
Margin="2"
/>
</MenuItem>
</Menu.Items>
我花了 2 天时间在网上搜索解决方案,但大多数问题似乎与网页主菜单有关,而不是 App 样式程序。
我希望有人能发现发生了什么。我尝试了不同的 IsHitTextVisible 设置、Focusable 设置等,没有什么能改变这种令人愤怒的行为?
是的,Emmanuelle,这里的菜单非常相似,但从另一个窗口非常类似于问题窗口,但它工作得很好:
<!--#region Menu Bar-->
<Menu
Background="Transparent"
Grid.Column="1"
Grid.Row="0"
Height="30"
HorizontalAlignment="Left"
Width="auto">
<MenuItem Header="_Linq Queries"
Margin="5"
Width="80"
Foreground="{StaticResource White0}">
<MenuItem Header="A/c Type 1 Only"
Background="#35F6FB"
Click="Linq1_Click"
Foreground="Black"
IsCheckable="false"/>
<MenuItem Header="A/c Type 2 Only"
Background="#35F6FB"
Click="Linq2_Click"
Foreground="Black"
IsCheckable="False"/>
<MenuItem Header="A/c Type 3 Only"
Background="#35F6FB"
Click="Linq3_Click"
Foreground="Black"
IsCheckable="False"/>
<MenuItem Header="A/c Type 4 Only"
Background="#35F6FB"
Click="Linq4_Click"
Foreground="Black"
IsCheckable="False"/>
<MenuItem Header="Multi A/C Holders"
Background="#35F6FB"
Click="Linq5_Click"
IsCheckable="False"
Foreground="Black"/>
<Separator />
<MenuItem Header="Show All Records"
Background="#35F6FB"
Click="Linq6_Click"
IsCheckable="False"
Foreground="Black"/>
<MenuItem Header="Create 'Join' of Bank and Details"
Background="#35F6FB"
Click="bankjoin_Click"
IsCheckable="false"
Foreground="Black"/>
</MenuItem>
<MenuItem Header="Filtering"
Width="60"
Foreground="{StaticResource White1}">
<MenuItem Header="Trigger My Own Command"
Command="{Binding myCommandBinding}"
FontWeight="DemiBold"
Foreground="{StaticResource Black1}"
Background="#00FF00"
Style="{StaticResource MenuItemGreen}"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"
Width="290"
Margin="2"/>
<!--<Button Grid.ColumnSpan="2" Grid.Row="4" Command="{Binding InformationCommand}">Info</Button>-->
</MenuItem>
<MenuItem Header="Options"
Click="Options_Click"
Width="50"
Foreground="{StaticResource White2}">
<MenuItem Header="Export Bank Account Db => CSV"
Click="ExportBankCSV_Click"
FontWeight="DemiBold"
Foreground="{StaticResource Black1}"
Background="#00FF00"
Style="{StaticResource MenuItemGreen}"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"
Width="290"
Margin="2"/>
<MenuItem Header="Export Customers Db => CSV"
Click="ExportCustCSV_Click"
FontWeight="DemiBold"
Foreground="{StaticResource Black1}"
Background="#00FF00"
Style="{StaticResource MenuItemGreen}"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"
Width="290"
Margin="2" />
<MenuItem Header="Export Details Db => CSV"
Click="ExportDetCSV_Click"
FontWeight="DemiBold"
Foreground="{StaticResource Black1}"
Background="#00FF00"
Style="{StaticResource MenuItemGreen}"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"
Width="290"
Margin="2"/>
<Separator/>
<MenuItem Header="Import Bank Account Db from CSV"
Click="ImportBankCSV_Click"
FontWeight="DemiBold"
Background="#FF0000"
Foreground="White"
Style="{StaticResource MenuItemRed}"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"
Width="290"
Margin="2"
/>
<MenuItem Header="Import Customers Db from CSV"
Click="ImportCustCSV_Click"
FontWeight="DemiBold"
Foreground="White"
Background="#FF0000"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"
Style="{StaticResource MenuItemRed}"
Width="290"
Margin="2"
/>
<MenuItem Header="Import Details Db from CSV"
Click="ImportDetCSV_Click"
FontWeight="DemiBold"
Foreground="White"
Background="#FF0000"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left"
Style="{StaticResource MenuItemRed}"
Width="290"
Margin="2"
/>
</MenuItem>
<MenuItem Header="Drag / Drop"
Click="Drag_Click"
IsTabStop="False"
Width="81"
Foreground="{StaticResource White1}">
</MenuItem>
<MenuItem Header="Close Viewer..."
Click="Exit_Click"
FontWeight="SemiBold"
Margin="2,0"
Width="97"
Foreground="{StaticResource White1}"/>
</Menu>
我什至已经将工作窗口中的菜单复制到这个相同的结果中,所以它似乎不是菜单代码?
我的窗户是这样的——
<Window x:Class="WPFPages.SqlDbViewer"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:data="clr-namespace:WPFPages"
mc:Ignorable="d"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
MinHeight="450"
MinWidth="867"
Loaded="OnWindowLoaded"
PreviewKeyDown="Window_PreviewKeyDown"
Title="Database Edit/View Utility"
Height="450" Width="867"
WindowStartupLocation="CenterScreen"
Closed="Window_Closed"
WindowStyle="ThreeDBorderWindow">
里面没有什么奇怪的??
我刚刚注意到,通过使用放大镜,我可以将鼠标放在 PopUpRow 本身的封闭矩形上,只要我触摸到实际的 MenuItem,它就会消失。所以是 MenuItem 敏感并导致整个弹出窗口关闭
更奇怪的是,通过在项目之外非常小心地将光标向下移动到菜单的一侧,我发现我可以将鼠标悬停在分隔符上,但不能悬停任何项目。!
最后,我尝试注释掉选项菜单前 3 项中使用的整个菜单项样式 MenuItemGreen,但它根本没有区别。我只是不知道这里发生了什么?
我不确定您想查看哪些资源?如上所述,我已经注释掉了这个特定文件中的所有菜单/菜单样式等,其他资源(菜单颜色,如 MenuItemGreen)都被其他具有完全工作菜单的窗口使用,所以我怀疑它们不能只影响这个窗口?
我刚刚从这个窗口的整个菜单系统中删除了所有 <Style and Background/foreground {Staticresource},但它仍然无法正常工作。它们现在只是贯穿始终的基本菜单命令,但仍然没有运气
请澄清还有什么可以帮助你?
这是一个好的和坏的菜单是什么样子的? 在此处输入图像描述
解决方案
推荐阅读
- ruby-on-rails - 如何将 Proc 作为带有附加参数的块传递?
- flutter - 无法捕获异步异常
- ruby-on-rails - 如何格式化 Json 以不与 ActiveModel::Serializer 嵌套关联
- android - 如何在 Flutter 中获取 GPS 日期和时间?
- sql - Hive SQL 查询用最接近的值填充表中缺失的日期值
- snapshot - 结合本地和远程 ZFS 快照 [zfs_autobackup]
- c++ - 如何在容器 C++ 中使用线程
- javascript - 如何在Javascript中获取数组中的“下一个”和“上一个”项目?
- javascript - 在 2021 年制作类似于 Iphone 上的 imessage 应用程序的输入框或文本区域
- regex - 如何使用正则表达式忽略 URL 中的 32 个字符