C# 在wpf中移动无边框窗口

C# 在wpf中移动无边框窗口,c#,wpf,xaml,C#,Wpf,Xaml,在我的C#WinForms应用程序中,我有一个主窗口,其中隐藏了默认控件 因此,为了让我能够移动它,我在主窗口中添加了以下内容: private const int WM_nchitest=0x84; private const int HTCLIENT=0x1; 私有常量int HTCAPTION=0x2; 私有常量int WM_nclbuttondblck=0x00A3; 受保护的覆盖无效WndProc(ref消息) { 如果(message.Msg==WM\u nclbuttondblck

在我的C#WinForms应用程序中,我有一个主窗口,其中隐藏了默认控件

因此,为了让我能够移动它,我在主窗口中添加了以下内容:

private const int WM_nchitest=0x84;
private const int HTCLIENT=0x1;
私有常量int HTCAPTION=0x2;
私有常量int WM_nclbuttondblck=0x00A3;
受保护的覆盖无效WndProc(ref消息)
{
如果(message.Msg==WM\u nclbuttondblck)
{
message.Result=IntPtr.Zero;
返回;
}
base.WndProc(ref消息);
//允许窗口移动
if(message.Msg==WM\u NCHITTEST&(int)message.Result==HTCLIENT)
message.Result=(IntPtr)HTCAPTION;
}
我有一个WPF应用程序,我还隐藏了默认控件,我想做同样的事情。我看到主窗口是从“窗口”派生的,所以上面的代码不起作用。
如何在WPF中执行此操作?

要执行此操作,您需要将事件处理程序附加到窗口的
MouseDown
事件,检查是否按下了鼠标左键并调用窗口上的
DragMove
方法

以下是具有此功能的窗口示例:

public partial class MyWindow : Window
{
    public MyWindow()
    {
        InitializeComponent();
        MouseDown += Window_MouseDown;
    }

    private void Window_MouseDown(object sender, MouseButtonEventArgs e)
    {
        if (e.ChangedButton == MouseButton.Left)
            DragMove();
    }
}

使用此选项会导致通过MouseUp或PreviewMouseUp调用的标签不再收到信号。@如果可以,Muffinman我会尝试将MouseUp用于标签,或者使用样式为标签的按钮并使用click事件。