WPF прозорци
В библиотеката User32 се нарича HWND, в Microsoft Foundation Classes (MFC) се нарича CWnd, а в Windows Forms се нарича Form. Но както и да го наричате, в повечето системи изграждането на потребителски интерфейси изисква визуален елемент от най-високо ниво, който може да бъде манипулиран от крайните потребители. В WPF този елемент се нарича прозорец.
Базовият тип на всички прозорци в WPF е System.Windows.Window. Обикновено типът Window се използва за SDI#windows и диалогови прозорци. По същество прозорецът е просто контрола, предназначена да служи като контейнер за съдържание от най-високо ниво. Обикновено прозорецът се дефинира с помощта на комбинация от маркиране и код:
публичен частичен клас Window1 : Прозорец
Когато стартирате тази програма, ще се появи незабележим прозорец, pic#
показано на фиг. 2.10.
Имайте предвид, че в живота на дори такъв прост прозорец има много етапи. Ето най-важните:
Повдига се събитието Window.Initialized. Повдига се събитието Window.Activated13. Събитието Window.Loaded се задейства. Събитието Window.ContentRendered се задейства. Потребителят взаимодейства с прозореца. Повдига се събитието Window.Closing. Повдига се събитието Window.Unloaded.
Повдига се събитието Window.Closed.
Фиг. 2.12.Показване на прозорец със задаване на свойството Собственик
Windows, които имат собственик, имат редица други функции. Те не се показват в списъка с прозорци, който се появява, когато натиснете Alt+Tab, въпреки че може да се появят в лентата на задачите. В допълнение, те се затварят автоматично, когато собственикът#прозорецът е затворен, и се скриват, когато собственикът#прозорецът е минимизиран.
Задаване на размер и позиция
След като разбрахме как да покажем прозорец, нека видим как да контролираме позицията му на екрана. Има три основни начиназадайте размера и позицията на прозореца: първоначално поведение, потребителско взаимодействие и текущи стойности.
Първоначалното поведение има два аспекта: къде на екрана да позиционирате прозореца и какъв размер да изберете за него. Началната позиция се определя от свойството WindowStartupLocation в комбинация със свойствата Top и Left. Размерът се контролира от свойствата SizeToContent, Width и Height. Свойството SizeToContent се взема предвид само ако Width и Height са Double.NaN (автоматичен избор) и прозорецът не е преоразмерен от потребителя.
След като желаната позиция и размери на прозореца са зададени, какво може да прави потребителят с прозореца? Оперативната съвместимост се определя от свойството ResizeMode, което определя дали потребителят изобщо може да промени размера на прозореца. Освен това свойствата MinWidth, MaxWidth, MinHeight и MaxHeight определят границите на ширината и височината на прозореца. Например в следващия пример прозорецът не може да бъде направен по-тесен от 500 пиксела, така че съдържанието винаги може да бъде прочетено.
И накрая, можете да получите или промените текущата позиция и размер на прозореца, като използвате свойствата Width, Height, Top и Left. Преоразмеряването на прозорец е тясно свързано с разположението на елементите в него, но ще оставим тази тема до Глава 4.
Потребителите очакват прозорци от определен стил да се държат по определени начини: размер, първоначална позиция и собственик. Така че се предполага, че диалоговият прозорец се показва с нещо подобно:
void ShowDialogMethod(изпращач на обект, RoutedEventArgs e) < Прозорец w = нов прозорец();
w.SizeToContent = SizeToContent.WidthAndHeight; w.WindowStartupLocation = WindowStartupLocation.CenterOwner; w.ShowInTaskbar = невярно;
Това казва, че прозорецът е центриран спрямо собственика си, а несе показва в лентата на задачите и автоматично се преоразмерява, за да пасне на съдържанието.
Обекти Window и Application
След като прозорец (или няколко прозореца) се покаже на екрана, често трябва да намерим всички отворени прозорци. Обикновено приложенията с множество прозорци от най-високо ниво (като Microsoft Office Word 2003) включват елемент от менюто Window, който ви позволява да преминавате от един отворен документ към друг. Това може да стане чрез създаване на глобален списък с променливи #, към който прозорецът се добавя по време на създаването и се премахва, когато се затвори. Екипът на WPF обаче реши да вгради тази възможност в обекта Application, който автоматично се уведомява, когато прозорецът е създаден и затворен.
Таблица 2.3.Поведение при прекратяване на приложението