Тонкая граница в окне WPF? - PullRequest
1 голос
/ 25 мая 2010

Я хотел бы создать окно с использованием WPF, которое имеет тонкую границу вокруг формы - то есть нет места для строки заголовка с помощью кнопок со значками / надписями и мин / макс / закрытие. Например, форма «дополнительных» значков новой панели задач Windows 7:

Пример изображения http://img576.imageshack.us/img576/6196/border.png

Я понимаю, что это можно сделать, установив свойство WindowStyle = None, однако я также использую API DwmExtendFrameIntoClientArea, который требует, чтобы свойство Background было прозрачным. Если я это сделаю, ни окно, ни граница не будут нарисованы, и на форме будут нарисованы только непрозрачные элементы управления.

Как мне добиться тонкой границы, сохраняя эффект Aero Glass на основном теле формы?

Ответы [ 3 ]

2 голосов
/ 25 мая 2010

Используйте WindowStyle="None" в окне. Подробнее см. В MSDN .

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="100" Width="100" WindowStyle="None">
     Hello World
</Window>
1 голос
/ 18 августа 2010

Что вам нужно сделать, это установить ResizeMode=CanResize, а затем сделать следующее в коде:

protected override IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr LParam, ref bool handled)
{
    switch (msg)
    {
        case WM_NCHITTEST:
                    //if the mouse pointer is not over the client area of the tab
                    //ignore it - this disables resize on the glass chrome
                    //a value of 1 is the HTCLIENT enum value for the Client Area
                    if (DefWindowProc(hwnd, WM_NCHITTEST, wParam, LParam).ToInt32() == 1)
                    {
                        handled = true;
                    }
                    break;
     }
}

[DllImport("user32.dll")]
        public static extern IntPtr DefWindowProc(IntPtr hWnd, int uMsg, IntPtr wParam,
           IntPtr lParam);
0 голосов
/ 15 марта 2011

Или используйте библиотеку интеграции оболочки Microsoft WPF

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...