150 likes | 418 Views
Классы Windows Presentation Foundation. Класс Application. Класс System.Windows. AppIication инкапсулирует приложение в целом. В приложении можно создать только один объект AppIication . Фрагмент кода в файле App.g.cs , который сгенерирован Visual Studio 2008:. namespace Wpf_Sample1 {
E N D
Класс Application • Класс System.Windows.AppIicationинкапсулирует приложение в целом. • В приложении можно создать только один объект AppIication. • Фрагмент кода в файлеApp.g.cs, который сгенерирован Visual Studio 2008: namespace Wpf_Sample1 { public partial class App : System.Windows.Application { public void InitializeComponent() { this.StartupUri = new System.Uri("Window1.xaml", System.UriKind.Relative); } /// Application Entry Point. public static void Main() { Wpf_Sample1.App app = new Wpf_Sample1.App(); app.InitializeComponent(); app.Run(); } } } • MетодRunклассаAppIication запускает диспетчер, управляющий отправкой событий. • Метод Runвозвращает управлениепри вызове методаShutdown(явном или WPF-вызове). • Явный или неявный вызов методаShutdown управляется свойством • public ShutdownMode ShutdownMode { get; set; } • Перечисление ShutdownMode имеет значения OnLastWindowClose, OnMainWindowClose и OnExplicitShutdown.
Свойства Current и Properties класса AppIication • Статическое свойство Currentдает доступ к объекту AppIication в любом месте программы: public static Application Current { get; } • Экземплярное свойство Propertiesдает доступ к коллекции, реализующей интерфейс System.Collections.IDictionary, которая поддерживается объектом AppIication . public IDictionary Properties { get; } • Свойства Propertiesи Currentдают доступ к элементам коллекции в любом месте приложения и на протяжении всей жизни приложения. В коллекцию можно добавить элемент любого типа, связав с ним ключ также любого типа.
Класс Window • Класс System.Windows.Windowиспользуется для создания визуального элемента верхнего уровня и является контейнером для других элементов управления. • В процессе создания окна в следующем порядке возбуждаются события: • Initialized • Activated • Loaded • ContentRendered • При закрытии окна события поступают в следующем порядке: • Closing • Unloaded • Closed • События Activated и Deactivatedвозникают при переключении на другие окна.
Событие Closing • Событие Closingпроисходит после вызова метода Close() - явного или неявного. В обработчике этого события можно отменить закрытие окна. • Событие Closingимеет типCancelEventHandler public delegate void CancelEventHandler( Object sender, CancelEventArgs e ); • В классе System.ComponentModel.CancelEventArgsопределено свойство Cancel, которое дает возможность отказаться от закрытия окна. public bool Cancel { get; set; } • В следующем примере окно закрывается только при выборе кнопки “Да” в окне сообщений MessageBox. private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { MessageBoxResult res = MessageBox.Show("Закрыть окно?", "", MessageBoxButton.YesNo); if (res == MessageBoxResult.No) e.Cancel = true; } • Обработчик для события Closingуказан в разметке: <Window x:Class="Wpf_Sample1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300" Closing="Window_Closing"> </Window>
Окно сообщений. КлассSystem.Windows.MessageBox • Для вывода сообщений и организации простейшего взаимодействия с пользователем обычно используется статический метод Show класса System.Windows.MessageBox. • Класс System.Windows.MessageBoxявляется непосредственным потомком класса System.Object и содержит только один собственный метод Show. • Открытый статический метод Showимеет 12 перегрузок. public static MessageBoxResult Show ( string messageBoxText ); public static MessageBoxResult Show ( string messageBoxText, string caption ); public static MessageBoxResult Show ( string messageBoxText, string caption, MessageBoxButton button ); public static MessageBoxResult Show ( Window owner, string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult, MessageBoxOptions options ); • Замечание: В Windows Forms есть свой классMessageBox для окна сообщений, который определен в пространстве имен System.Windows.Forms. В этом же пространстве имен определены перечисления для класса.
Перечислениядля класса MessageBox • Перечисление System.Windows.MessageBoxResult содержит информацию о том, какую кнопку нажал пользователь. Значения перечисления • Ok Yes • Cancel No None • Перечисление System.Windows.MessageBoxButtonsопределяет набор кнопок в окне сообщений. Значения перечисления • Ok OkCancel • YesNoYesNoCancel • Перечисление MessageBoxImageопределяет одну из готовых иконок в окне сообщений, например, MessageBoxImage.Error. • Перечисление MessageBoxOptionsопределяет дополнительные настройки окна сообщений.
Диалоги • В WPF для диалогов пользователя используется класс System.Windows.Window. Диалоги создаются с помощью методов : publicvoidShow(); public Nullable<bool> ShowDialog();
Отношение подчиненный-владелец • Можно установить отношение подчиненный-владелец между окнами, присвоив свойству Ownerокна ссылку на окно-владелец (owner). public Window Owner { get; set; } • Подчиненное окно никогда не скрывается за окном-владельцем(свойство, необходимое для окон “Find-Replace”). • Подчиненное окно минимизируется (сворачивается) и закрывается одновременно с окном-владельцем. • Окно-владелец может получить доступ к подчиненным(собственным) окнам через свойство public WindowCollection OwnedWindows { get; }; public sealed class WindowCollection : ICollection, IEnumerable • Окно, открытое вызовом метода Show, не имеет автоматической связи с окном, его открывшим. Если необходимо установить эту связь, надо присвоить значение свойству Owner.
Классы OpenFileDialog и SaveFileDialog • Классы используются для создания стандартных диалогов для выбора или ввода имени файла. Диалоги дают возможность навигации по файловой системе. • Диалоги создаются только как модальныепри вызове метода ShowDialog(). После того, как диалог закрыт, имя выбранного пользователем файла доступно через свойства объекта класса OpenFileDialog ( SaveFileDialog). • Определенные в классах OpenFileDialog и SaveFileDialog свойства дают возможность немного изменить набор элементов и функциональность стандартных диалогов. public virtual Nullable<bool> ShowDialog(); public Nullable<bool> ShowDialog( Window owner );
Некоторые открытые свойства класса FileDialog • Можно восстановить все значения свойств, принятые по умолчанию, вызвав метод publicoverridevoidReset();
Пример • В приведенном ниже коде • создается объекткласса OpenFileDialog: • задается строка-фильтр; • в том случае, когда пользователь подтвердил выбор, нажав кнопку Open, имя файла и текущий каталог выводятся в элемент управления TextBox. private void button_Open_Click(object sender, RoutedEventArgs e) { OpenFileDialogdlg = new OpenFileDialog(); dlg.Filter = "C#(*cs)|*.cs|PowerPointDocs(*.ppt;*pptx)|*ppt;*pptx;|All(*.*)|*.*"; dlg.FilterIndex = 2; if ( dlg.ShowDialog()== true ) { textBox1.Text = dlg.FileName + "\n" + Directory.GetCurrentDirectory().ToString(); } }
Класс OpenFileDialog • Свойства класса OpenFileDialog: • Метод класса открывает файл, имя которого выбрал пользователь, в режиме только для чтения (независимо от состояния отмечаемой кнопки <ReadOnly>): publicStreamOpenFile();
Класс SaveFileDialog • Свойства класса SaveFileDialog: • Метод класса создает и открывает файл, имя которого выбрал пользователь, в режиме для чтения/записи (если файл уже существует, записанные в нем данные будут потеряны): publicStreamOpenFile();