2013-12-09 1 views
1

Когда я установил видимость главного окна в скрытое, на панели задач не отображается значок, поэтому я не могу управлять окном, чтобы показать его снова. Я хочу, чтобы значок приложения отображался, даже когда я скрываю окно, и чтобы показать окно, когда я нажимаю кнопку на панели задач. (что-то вроде минимизации поведения)
Как я могу добиться этого с помощью WPF и .Net 4.0 в C#?
Редактировать: Я имею в виду иконку на панели задач (обычно в левой и средней горизонтальной панели задач), а не на уведомлении в системном трее.Показать значок в панели задач для скрытых окон

+0

Любой из них может помочь: http://social.msdn.microsoft.com/Forums/vstudio/en-US/01b6f20c-d4fb-4956-a3f6-d5e5d91bd239/wpf-menu-for-system-tray-icon ? forum = wpf или http://social.msdn.microsoft.com/Forums/vstudio/en-US/0913ae1a-7efc-4d7f-a7f7-58f112c69f66/c-application-system-tray-icon –

+0

@SepehrM, есть ли у вас просто используя 'this.WindowState = WindowState.Minimized;' или вы действительно спрашиваете о значке в трее? – Yuriy

+0

@drew_w Я имел в виду значок панели задач, а не уведомление в системном трее. – SepehrM

ответ

2

Итак, в соответствии с разделом «комментарии» вы должны свести к минимуму или скрыть окно, но все же показать некоторые окна или диалоги, открывающиеся в окне. Во-первых, если вы хотите сохранить окна в панели задач, вы должны свести к минимуму с:

this.WindowState = WindowState.Minimized 

Это можно назвать из любой формы. Как вы уже упоминали, это будет закрыть скрыть любые диалоги, у которых это окно установлено как родительский. Ключ, значит, не использовать это окно в качестве родителя. Допустим, ваши диалоги наследуются от формы. Вы хотите использовать:

newWindow.Show(); 

Я предполагаю, что вы звоните «ShowDialog», которая связывает состояние окна в состояние родительского окна. Попробуйте это и, надеюсь, это поможет! более

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

Одно примечание: то же самое на самом деле верно и MessageBoxes, но способ управления родительской формы является с первым параметром вызова MessageBox.Show(). Если вы передадите форму в качестве первого параметра, это будет родительский элемент, иначе родительский элемент не будет установлен.

+0

Спасибо, но на самом деле, помимо диалогов, у меня есть менеджер по стыковке AvalonDock в главном окне. Когда пользователь минимизирует окно, все плавающие панели скрыты. Поэтому я скрываю окно вместо того, чтобы фактически минимизировать его, чтобы предотвратить скрытие этого плавающего приложения. Есть ли лучший подход, чем скрытие окна? – SepehrM

+0

Глядя на код для AvalonDock на CodePlex, он выглядит как «FloatingWindow», по крайней мере, наследуется от Window. Я предполагаю, что если вы посмотрите на варианты или захотите немного войти в код AvalonDock, вы найдете способ свести к минимуму главное окно, но все же покажете панели (которые теперь, вероятно, являются их собственными окнами). Тот же самый принцип, о котором я говорил выше, должен применяться. Удачи! –

+0

Хотя есть несколько исправлений, связанных с этой проблемой, никто из них, похоже, не работает для меня. Я все равно посмотрю на это и посмотрю, смогу ли я придумать решение. Таким образом, нет возможности напрямую контролировать (показывать/скрывать) значок панели задач? Я знаю эту статью, но не нашел ничего полезного: http://msdn.microsoft.com/en-us/library/ff699128.aspx – SepehrM