WPF窗口上的细边框?

时间:2010-05-24 20:45:54

标签: c# wpf windows

我想创建一个窗口,使用WPF,在窗体周围有一个细边框 - 即标题栏没有空格,带有图标/标题和最小/最大/关闭按钮。例如,新的Windows 7任务栏的“额外”图标形式:

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

我知道这可以通过设置WindowStyle = None属性来完成,但是,我也使用DwmExtendFrameIntoClientArea API,这要求Background属性是透明的。如果我这样做,既不绘制窗口也不绘制边框,并且只绘制窗体上的非透明控件。

如何在表格主体上保持Aero Glass效果的同时实现细边框?

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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);

答案 2 :(得分:0)