Red Chocolate Ответов: 2

Неподвижное окно в wpf


Привет, Как установить мое окно wpf как не подвижное, когда его щелкают и перетаскивают с помощью мыши?

2 Ответов

Рейтинг:
2

Fredrik Bornander

Попробуйте перехватить звонки, вот так;

using System;
using System.Windows;
using System.Windows.Interop;

namespace WpfApplication23
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            SourceInitialized += Window1_SourceInitialized;
        }

        private void Window1_SourceInitialized(object sender, EventArgs e)
        {
            WindowInteropHelper helper = new WindowInteropHelper(this);
            HwndSource source = HwndSource.FromHwnd(helper.Handle);
            source.AddHook(WndProc);
        }


        private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
        {
            const int WM_SYSCOMMAND = 0x0112;
            const int SC_MOVE = 0xF010;

            switch (msg)
            {
                case WM_SYSCOMMAND:
                    int command = wParam.ToInt32() & 0xfff0;
                    if (command == SC_MOVE)
                    {
                        handled = true;
                    }
                    break;
                default:
                    break;
            }
            return IntPtr.Zero;
        }
    }
}


Надеюсь, это поможет,
Фредрик


Red Chocolate

да спасибо но мне тоже нужна строка заголовка

Fredrik Bornander

Правильно, проверьте новое предложение, оно обрабатывает сценарий, все еще позволяя вам использовать любой стиль окна.

Рейтинг:
2

Storxstar

добавьте это в ваше окно Xaml ResizeMode="NoResize" это отключит пользователя от изменения размера окна, так как для перемещения я не уверен.

Нашел его add IsDraggingOrResizing="False" это должно сделать трюк!

Подожди, извини, неважно. Это только для окон DevExpress...