san*_*oIT 5 wpf xaml stackpanel
我有一个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>
Run Code Online (Sandbox Code Playgroud)
主机TreeView也使用ContextMenu.我们的想法是,如果您右键单击TreeView中的项目,您将获得它的ContextMenu.如果您右键在树视图中的空白区域中进行clik,您将获得具有较少选项的"默认"上下文菜单.
这一切都在解决一个奇怪的问题.如您所见,水平StackPanel在图像之间留下了边距.如果我在项目之间右键单击该空间,则会显示TreeView上下文菜单.我希望我的HierarchicalDataTemplate中定义的ContextMenu会弹出,因为我右键单击StackPanel本身.
我发现,如果我为StackPanel分配背景颜色,那么它可以正常工作,但我希望尽可能避免这种情况.
有任何想法吗?