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)