Правила проектирования и правила безопасности являются хорошим местом для запуска.
Просто добавьте этот код в свое окно:
[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);
}
Нет, похоже, это невозможно. Цитата из документации свойства Icon (выделено мной):
В окне WPF всегда отображается значок. Если он не предоставляется настройкой Icon, WPF выбирает значок для отображения на основе следующих правил:
- Используйте значок сборки, если он указан.
- Если значок сборки не указан, используйте значок Microsoft Windows по умолчанию.
Если вы используете Icon для указания пользовательского значка окна, вы можете восстановить значок приложения по умолчанию, установив для Icon значение
null
.
Таким образом, очевидно, что полностью прозрачный значок будет вашим лучшим выбором здесь . Или, возможно, обойти все это, используя функции Windows API, чтобы установить соответствующий стиль в окне. Но это может мешать управлению окнами WPF.
Хотя это не совсем правильное решение, вы можете попробовать одно из следующих действий:
Установка свойства WindowStyle на ToolWindow приведет к исчезновению значка, но строка заголовка (очевидно) будет быть меньше.
Напишите ControlTemplate для всего окна. В зависимости от того, должно ли Окно выглядеть как «настоящее» Окно, потребуется много усилий, чтобы попытаться воссоздать стиль по умолчанию в шаблоне.
Мое первое предложение было бы не делайте этого . В WinForms вы можете использовать типы форм-стилей для создания диалогового окна без значка, но только потому, что это стандарт Windows. Только формы с этими конкретными типами границ не должны иметь значков; это то, чего ожидают пользователи.