Если вы вы просто помещали слова в свой заголовок в поисковую систему, а не здесь, как я только что сделал, то вы бы нашли гораздо больше результатов, чем эти. Вы можете найти ответ в следующем:
Можно ли отображать окно wpf без значка в строке заголовка?
Как удалить значок из окна заголовка
UPDATE >>>
Ничего себе, правда? Я трачу время, чтобы сделать то, что вы должны сделать , и вы меня голодали? Что касается «не читать ваш вопрос» и «ни одна из этих работ» ... на самом деле? Потому что я не только прочитал ваш вопрос, но и проверил, что у каждого сообщения есть действительный ответ. Таким образом, я выполнил первый пример и предположил, что?
[/g11]
Правильно ... это работает . .. и в .NET 4. Может быть, вы не читали комментарии к ответу, где «последняя строка» добавляется в код? [По-видимому, он не работает в .NET 4.5 на Windows 8 в соответствии с полученным комментарием.]
UPDATE 2 >>>
Ваш последний комментарий о это не работало над крупномасштабными приложениями. Таким образом, я затем добавил код к крупномасштабному приложению, и снова он работал нормально. Тем не менее, я продолжал проверять это, и вы должны использовать RibbonWindow
в вашем приложении, потому что, когда я тестировал этот код на крупномасштабном приложении с RibbonWindow
, код сделал не работа.
Если вы используете обычный Window
, попробуйте этот код (из ответа @ MichalCiechan на первый связанный пост):
Сначала добавьте этот класс:
public static class IconHelper
{
[DllImport("user32.dll")]
static extern int GetWindowLong(IntPtr hwnd, int index);
[DllImport("user32.dll")]
static extern int SetWindowLong(IntPtr hwnd, int index, int newStyle);
[DllImport("user32.dll")]
static extern bool SetWindowPos(IntPtr hwnd, IntPtr hwndInsertAfter, int x,
int y, int width, int height, uint flags);
[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hwnd, uint msg, IntPtr wParam, IntPtr
lParam);
const int GWL_EXSTYLE = -20;
const int WS_EX_DLGMODALFRAME = 0x0001;
const int SWP_NOSIZE = 0x0001;
const int SWP_NOMOVE = 0x0002;
const int SWP_NOZORDER = 0x0004;
const int SWP_FRAMECHANGED = 0x0020;
const uint WM_SETICON = 0x0080;
public static void RemoveIcon(Window window)
{
// Get this window's handle
IntPtr hwnd = new WindowInteropHelper(window).Handle;
// Change the extended window style to not show a window icon
int extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle | WS_EX_DLGMODALFRAME);
// Update the window's non-client area to reflect the changes
SetWindowPos(hwnd, IntPtr.Zero, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE |
SWP_NOZORDER | SWP_FRAMECHANGED);
}
}
Затем добавьте это в MainWindow.xaml.cs
:
protected override void OnSourceInitialized(EventArgs e)
{
IconHelper.RemoveIcon(this);
}
Oh ... и еще одно замечание ... это не сработает, если вы установили Window.Icon
свойство, но я предполагаю, что вы этого не сделали, если вы не хотите, чтобы значок появлялся.