使用应用程序命令的 WPF 通知图标上下文菜单被禁用

Phi*_*yck 5 data-binding wpf contextmenu notifyicon

我有一个 WPF PRISM 应用程序,其主窗口基于 ribbinwindow。当我右键单击图标托盘中的图标时,退出菜单被禁用。有人可以告诉我如何启用它并正确处理关闭事件。

我显示了主窗口的整个代码,但让我头疼的是通知图标的上下文菜单。我通过尝试用谷歌搜索解决此问题,找到了placementTarget commandtarget 绑定,但这似乎不起作用。
功能区按钮也以与上下文菜单相同的方式绑定,确实按预期工作。

在这种情况下,我更愿意保留命令绑定而不处理事件,因为我正在使用 MVVM。可以通过简单地调用一个事件并在该事件中调用 close 来处理关闭,而不会出现关注点分离问题,但我也将使用其他命令。所以请不要举办任何活动。

<ribbon:RibbonWindow x:Class="_2Focus.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:ribbon="http://schemas.microsoft.com/winfx/2006/xaml/presentation/ribbon" 
    xmlns:prism="http://www.codeplex.com/prism"
    xmlns:tb="http://www.hardcodet.net/taskbar"
    Title="2Focus" Icon="/2Focus;component/favicon.ico"
    x:Name="Mainwindow"
    Height="500" Width="900">
<Grid x:Name="LayoutRoot">
    <Grid.RowDefinitions>
        <RowDefinition x:Name="RibbonRow" Height="Auto"/>
        <RowDefinition x:Name="ClientRow" Height="*"/>
    </Grid.RowDefinitions>
    <tb:TaskbarIcon IconSource="/2Focus;component/favicon.ico" ToolTipText="2 Focus" >
        <tb:TaskbarIcon.ContextMenu>
            <ContextMenu>
                <MenuItem Header="Exit" Command="ApplicationCommands.Close" 
                          CommandTarget="{Binding Path=PlacementTarget, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}}">
                    <MenuItem.Icon>
                        <Image Source="Images/exit.png" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="NearestNeighbor"/>
                    </MenuItem.Icon>
                </MenuItem>
                <MenuItem Header="Second Menu Item" />
            </ContextMenu>
        </tb:TaskbarIcon.ContextMenu>
    </tb:TaskbarIcon>
    <ribbon:Ribbon x:Name="Ribbon" prism:RegionManager.RegionName="RibbonRegion" SelectionChanged="Ribbon_SelectionChanged" >
        <ribbon:Ribbon.QuickAccessToolBar>
            <ribbon:RibbonQuickAccessToolBar Name="ribbonQuickAccessToolBar" AllowDrop="True" />
        </ribbon:Ribbon.QuickAccessToolBar>
        <ribbon:Ribbon.ApplicationMenu>
            <ribbon:RibbonApplicationMenu SmallImageSource="/2Focus;component/favicon.ico">
                <ribbon:RibbonApplicationMenu.FooterPaneContent>
                    <DockPanel LastChildFill="False">
                        <ribbon:RibbonButton DockPanel.Dock="Right" Margin="2" Command="ApplicationCommands.Close" SmallImageSource="Images/exit.png" />
                    </DockPanel>
                </ribbon:RibbonApplicationMenu.FooterPaneContent>
            </ribbon:RibbonApplicationMenu>
        </ribbon:Ribbon.ApplicationMenu>
    </ribbon:Ribbon>
    <Grid x:Name="ClientGrid" Grid.Row="1">
        <ContentControl prism:RegionManager.RegionName="ClientRegion" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
    </Grid>
</Grid>
Run Code Online (Sandbox Code Playgroud)