gpt4 book ai didi

wpf - 单击 StackPanel 中的 'empty space' 时,上下文菜单不出现

转载 作者:行者123 更新时间:2023-12-03 07:01:01 25 4
gpt4 key购买 nike

我有一个 HierarchicalDataTemplate,其中包含一些简单的项目,包含在水平 StackPanel 中。上下文菜单也被分配给根 StackPanel 容器:

<HierarchicalDataTemplate DataType="{x:Type data:GroupViewModel}"
ItemsSource="{Binding Path=Children}">
<StackPanel Orientation="Horizontal" Margin="2" ContextMenuOpening="groupContextMenuOpening">
<StackPanel.ContextMenu>
<StaticResource ResourceKey="groupContextMenu" />
</StackPanel.ContextMenu>

<Rectangle Width="16" Height="15" Fill="{Binding Converter={StaticResource HierarchyLevelConverter}}" Margin="0 0 3 0" Cursor="Hand" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown" >
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding SetCurrent}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Rectangle>
<Image Width="16" Height="15" Source="{Binding Path=GroupState, Converter={StaticResource GroupStateConverter}}" Cursor="Hand" Margin="0 0 3 0">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown" >
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding ToggleGroupState}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Image>
</StackPanel>
</HierarchicalDataTemplate>

宿主 TreeView 也使用 ContextMenu。这个想法是,如果右键单击 TreeView 中的某个项目,您将获得它的上下文菜单。如果您右键单击 TreeView 中的空白区域,您将获得带有较少选项的“默认”上下文菜单。

除了一个奇怪的问题之外,一切正常。正如您所看到的,水平 StackPanel 在图像之间留有边距。如果我右键单击项目之间的空间,则会显示 TreeView 上下文菜单。我希望当我右键单击 StackPanel 本身时,会弹出 HierarchicalDataTemplate 中定义的 ContextMenu。

我发现,如果我为 StackPanel 分配背景颜色,它就会起作用,但如果可能的话,我宁愿避免这种情况。

有什么想法吗?

最佳答案

StackPanelBackground设置为Transparent以使其在这些空白区域进行 HitTest 。

关于wpf - 单击 StackPanel 中的 'empty space' 时,上下文菜单不出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7391122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com