2010-05-24 8 views
1

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

Example Image http://img576.imageshack.us/img576/6196/border.png

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

Как достичь тонкой границы, поддерживая эффект Aero Glass на основном корпусе формы?

ответ

2

Используйте WindowStyle="None" на окне. See MSDN for details.

<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> 
+0

вы можете также добавить элемент Установка толщины вас нужен –

+0

Я использую API DwmExtendFrameIntoClientArea, чтобы иметь фон Aero Glass на всей форме - установка 'WindowStyle =" None "означает, что нарисованы только непрозрачные части формы (и без границы). – Rezzie

+0

'WindowStyle =" None "' будет нарисовать границу вокруг окна точно так же, как на вашем скриншоте. – bitbonk

1

Что вам нужно сделать, это установить 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); 
Смежные вопросы