本文介绍了如果我们使用< windowchrome.windowchrome>,请禁用contxtmenu。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果我使用WindowChrome.WindowChrome样式,我无法禁用。请让我知道您的输入以解决此问题。没有WindowChrome,我可以使用相同的代码禁用上下文菜单。
我尝试过:
I am unable to disable if I use WindowChrome.WindowChrome style. Please let me know your input to resolve this problem. Without WindowChrome, I am able to disable context menu with the same piece of code.
What I have tried:
<Window x:Class="ConextMenu_Sample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" WindowStyle="None">
<WindowChrome.WindowChrome>
<WindowChrome CaptionHeight="35"
CornerRadius="0"
ResizeBorderThickness="5"
UseAeroCaptionButtons="False"
/>
</WindowChrome.WindowChrome>
<Window.Resources>
</Window.Resources>
<Grid>
</Grid>
</Window>
public partial class MainWindow : Window
{
private const uint WP_SYSTEMMENU = 0x02;
private const uint WM_SYSTEMMENU = 0xa4;
public MainWindow()
{
InitializeComponent();
Loaded += OnLoaded;
}
private void OnLoaded(object sender, RoutedEventArgs e)
{
IntPtr windIntPtr = new WindowInteropHelper(this).Handle;
HwndSource hwndSource = HwndSource.FromHwnd(windIntPtr);
hwndSource.AddHook(new HwndSourceHook(WndProc));
}
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam, ref bool handled)
{
if ((msg == WM_SYSTEMMENU) && (wparam.ToInt32() == WP_SYSTEMMENU))
{
handled = true;
}
return IntPtr.Zero;
}
}
推荐答案
这篇关于如果我们使用< windowchrome.windowchrome>,请禁用contxtmenu。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!