WPF: удалить заголовок / блок управления - PullRequest
7 голосов
/ 05 ноября 2010

Я только что переключился с WinForms на wpf, и в WinForms удаление целого поля заголовка очень просто, просто установите title = "" и ControlBox = false.

Теперь есть много предложений о том, как сделать это с wpf, все они используют родные вызовы Win32. Хотя они и снимают блок управления, они все же оставляют более толстую границу сверху.

Вот как я хочу, чтобы это выглядело.

Я уверен, что это возможно, используя какой-то нативный вызов, но как?

Ответы [ 3 ]

9 голосов
/ 05 ноября 2010

Ну, попробуйте это

WindowStyle="none"

как это:

<Window x:Class="Test.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow"  WindowStyle="None"
    MinHeight="350" MaxHeight="350" MinWidth="525" MaxWidth="525">
<Grid>

</Grid>
</Window>

Редактировать:

Это выглядит немного глупо, но таким образом (с Min- и MaxHeight / Width при одном и том же размере) вы можете предотвратить изменение размера окна

6 голосов
/ 05 ноября 2010

Это альтернативный способ сделать это. Чтобы убрать Макс. / Свернуть, вам нужно изменить ResizeMode следующим образом

<Window x:Class="MyWpfApplication.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="" Height="350" Width="525" ResizeMode="NoResize">
    <Grid>

    </Grid>
</Window>

После этого вы можете удалить кнопку «Закрыть», добавив ( подробнее здесь )

private const int GWL_STYLE = -16;
private const int WS_SYSMENU = 0x80000;
[DllImport("user32.dll", SetLastError = true)]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);

public MainWindow()
{
    SourceInitialized += Window_SourceInitialized;
}

void Window_SourceInitialized(object sender, EventArgs e)
{
    var hwnd = new WindowInteropHelper(this).Handle;
    SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);
}
0 голосов
/ 05 ноября 2010

Установить WindowStyle = нет

...