Действительно ли возможно отобразить wpf окно без значка в строке заголовка?

Правила проектирования и правила безопасности являются хорошим местом для запуска.

29
задан Michael Arnell 13 August 2013 в 09:06
поделиться

4 ответа

Просто добавьте этот код в свое окно:

[DllImport("user32.dll")]
static extern uint GetWindowLong(IntPtr hWnd, int nIndex);

[DllImport("user32.dll")]
static extern int SetWindowLong(IntPtr hWnd, int nIndex, uint dwNewLong);

private const int GWL_STYLE = -16;

private const uint WS_SYSMENU = 0x80000;

protected override void OnSourceInitialized(EventArgs e)
{
    IntPtr hwnd = new System.Windows.Interop.WindowInteropHelper(this).Handle;
    SetWindowLong(hwnd, GWL_STYLE,
        GetWindowLong(hwnd, GWL_STYLE) & (0xFFFFFFFF ^ WS_SYSMENU));

    base.OnSourceInitialized(e);
}
27
ответ дан 28 November 2019 в 01:08
поделиться

Нет, похоже, это невозможно. Цитата из документации свойства Icon (выделено мной):

В окне WPF всегда отображается значок. Если он не предоставляется настройкой Icon, WPF выбирает значок для отображения на основе следующих правил:

  1. Используйте значок сборки, если он указан.
  2. Если значок сборки не указан, используйте значок Microsoft Windows по умолчанию.

Если вы используете Icon для указания пользовательского значка окна, вы можете восстановить значок приложения по умолчанию, установив для Icon значение null .

Таким образом, очевидно, что полностью прозрачный значок будет вашим лучшим выбором здесь . Или, возможно, обойти все это, используя функции Windows API, чтобы установить соответствующий стиль в окне. Но это может мешать управлению окнами WPF.

10
ответ дан 28 November 2019 в 01:08
поделиться

Хотя это не совсем правильное решение, вы можете попробовать одно из следующих действий:

  1. Установка свойства WindowStyle на ToolWindow приведет к исчезновению значка, но строка заголовка (очевидно) будет быть меньше.

  2. Напишите ControlTemplate для всего окна. В зависимости от того, должно ли Окно выглядеть как «настоящее» Окно, потребуется много усилий, чтобы попытаться воссоздать стиль по умолчанию в шаблоне.

17
ответ дан 28 November 2019 в 01:08
поделиться

Мое первое предложение было бы не делайте этого . В WinForms вы можете использовать типы форм-стилей для создания диалогового окна без значка, но только потому, что это стандарт Windows. Только формы с этими конкретными типами границ не должны иметь значков; это то, чего ожидают пользователи.

-1
ответ дан 28 November 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: