Wpf 当选择一个菜单项(DataGridCell)时,如何关闭包含菜单的弹出窗口
我在使用DataGridCell中包含动态菜单的弹出窗口时遇到问题。我可以通过单击窗口中的任何其他位置,使弹出窗口看起来很好,当焦点丢失时消失。但是,当选择一个菜单项时,我无法使弹出窗口消失 以下是my CellTemplate的XAML:Wpf 当选择一个菜单项(DataGridCell)时,如何关闭包含菜单的弹出窗口,wpf,datagrid,popup,menuitem,Wpf,Datagrid,Popup,Menuitem,我在使用DataGridCell中包含动态菜单的弹出窗口时遇到问题。我可以通过单击窗口中的任何其他位置,使弹出窗口看起来很好,当焦点丢失时消失。但是,当选择一个菜单项时,我无法使弹出窗口消失 以下是my CellTemplate的XAML: <DockPanel> <ToggleButton Content=" + " FontWeight="Bold" FontFamily="Arial"
<DockPanel>
<ToggleButton Content=" + "
FontWeight="Bold"
FontFamily="Arial"
Foreground="Green"
BorderBrush="Transparent"
IsThreeState="False"
DockPanel.Dock="Right"
Name="Button_AddDefinition">
</ToggleButton>
<Popup IsOpen="{Binding ElementName=Button_AddDefinition, Path=IsChecked}"
StaysOpen="False"
Placement="Right"
PlacementTarget="{Binding ElementName=Button_AddDefinition}"
AllowsTransparency="True">
<Border CornerRadius="3"
Background="WhiteSmoke"
BorderBrush="DarkGray"
BorderThickness="1">
<Menu ItemsSource="{Binding Path=NewDefinitionTypes}">
<Menu.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Vertical" />
</ItemsPanelTemplate>
</Menu.ItemsPanel>
<Menu.ItemTemplate>
<DataTemplate >
<MenuItem Header="{Binding StringFormat='New {0}'}"
Command="{Binding RelativeSource={RelativeSource AncestorType=Popup}, Path=DataContext.NewDefinitionCommand}"
CommandParameter="{Binding}">
</MenuItem>
</DataTemplate>
</Menu.ItemTemplate>
</Menu>
</Border>
</Popup>
<ComboBox SelectedItem="{Binding Path=Definition, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True, ValidatesOnDataErrors=True}"
ItemsSource="{Binding Path=AvailableDefinitions}"
BorderBrush="Transparent"
MouseUp="DataGridCell_ComboBox_MouseUp"
DisplayMemberPath="Name"
Style="{StaticResource ValidationErrorStyle}">
</ComboBox>
</DockPanel>
当我单击切换按钮(即“+”)时,我会弹出一个动态填充的弹出窗口,每个项目都有一个菜单项。下面是它的外观:
当我点击弹出窗口之外的任何地方时,弹出窗口消失(我想要的)。但是,当我单击其中一个项目时,我还希望弹出窗口处理选择,然后弹出窗口应该消失。这就是我要找的。如何使弹出窗口在选中其中的项目后消失。我在一个MVVM平台上工作,所以尽量少的代码隐藏是首选,但不是教条
有什么想法吗?为什么不创建一个上下文菜单,而不是创建一个菜单并将其放置在弹出窗口中?主要原因是我只希望在用户单击“+”按钮时显示项目菜单。要求是用户操作来打开菜单,要求是不要使用简单的上下文菜单(如果完全由我决定的话,我会这样做)。是否可以指定上下文菜单,但可以从行中的切换按钮/按钮“启动”?