WPF上下文菜单绑定在右键单击时有效,但在左键单击时无效
本文关键字:单击 无效 有效 菜单 右键 WPF 上下文 绑定 | 更新日期: 2023-09-27 18:03:24
我有下面的xaml定义了一个上下文菜单在wpf:
<Grid Name="grid">
<Button x:Name="settingsButton" DockPanel.Dock="Left" Content="Settings" Click="SettingsButtonClicked">
<Button.ContextMenu>
<ContextMenu>
<MenuItem Header ="Column Chooser">
<MenuItem IsCheckable="true" Header="A" IsChecked="{Binding Path=IsAChoosen}"></MenuItem>
<MenuItem IsCheckable="true" Header="B" IsChecked="{Binding Path=IsBChoosen}"></MenuItem>
<MenuItem IsCheckable="true" Header="C" IsChecked="{Binding Path=IsCChoosen}"></MenuItem>
</MenuItem>
</ContextMenu>
</Button.ContextMenu>
</Button>
</Grid>
如果我正常地从右键菜单中调出上下文菜单,那么绑定就可以正常工作。
然而,我希望上下文菜单显示当我左键单击按钮而不是右键单击。所以我有下面的代码来做这件事:
public partial class SettingsView : UserControl
{
public SettingsView()
{
InitializeComponent();
settingsButton.MouseRightButtonDown += SettingsButtonOnMouseRightButtonDown;
}
private void SettingsButtonOnMouseRightButtonDown(object sender, MouseButtonEventArgs mouseButtonEventArgs)
{
settingsButton.ContextMenu.Visibility = Visibility.Hidden;
}
private void SettingsButtonClicked(object sender, RoutedEventArgs e)
{
settingsButton.ContextMenu.Visibility = Visibility.Visible;
settingsButton.ContextMenu.PlacementTarget = sender as Image;
settingsButton.ContextMenu.IsOpen = true;
}
}
当我这样做时,绑定不起作用。有人知道为什么它工作与右键,而不是当我强制它左键点击?
代替Image设置PlacementTarget To按钮
private void SettingsButtonClicked(object sender, RoutedEventArgs e)
{
settingsButton.ContextMenu.Visibility = Visibility.Visible;
settingsButton.ContextMenu.PlacementTarget = sender as Button;
settingsButton.ContextMenu.IsOpen = true;
}