Объекты Window и Frame. Управление внешним видом приложения

Последнее обновление: 11.02.2016

Объект Window в UWP используется для представления окна приложения. Хотя напрямую мы работаем преимущественно с элементом Page, который представляет страницу приложения, и его кодом, но фактически объект Window является контейнером для элемента Page.

Если мы откроем файл App.xaml.cs, который есть в проекте по умолчанию и который хранит код главного класса приложения - класса App, то в нем мы можем найти использование объекта Window.

Чтобы получить текущее окно приложения, мы можем использовать статическое свойство Current:

Window window = Window.Current;

Содержимое окна устанавливается с помощью свойства Content. Чтобы окно стало активным для пользователя и чтобы пользователь смог с ним взаимодействовать, у окна надо вызвать метод Activate().

Немного экспериментируем с объектом Window. Для этого перейдем опять же в файле App.xaml.cs к методу OnLaunched(), который запускается при старте приложения, и удалим (или закомментируем) все его содержимое:

protected override void OnLaunched(LaunchActivatedEventArgs e)
{
}

И если мы запустим приложение, то нам просто отобразится экран заставки, потому что содержимое текущего объекта Window не установлено. Поэтому изменим метод OnLaunched следующим образом:

protected override void OnLaunched(LaunchActivatedEventArgs e)
{
	Window.Current.Content = new Button()
    {
        Content = "Привет мир!",
        HorizontalAlignment = HorizontalAlignment.Center,
        Background = new SolidColorBrush(Windows.UI.Colors.LightPink)
    };
    Window.Current.Activate();
}

В данном случае в качестве содержимого окна устанавливается кнопка. Причем важно сделать оба шага: установка свойства Content и активацию окна посредством метода Activate(). В итоге при запуске мы увидим следующее окно:

Объект Window в Universal Windows Platform

Объект Frame

Как правило, для установки содержимого в окне приложения используются не отдельные элементы управления типа кнопок или текстовых поле, а фреймы - объекты типа Frame. Фреймы упрощают организацию содержимого в приложении, например, в виде отдельных страниц - элементов Page и передачу их в объект Window.

Для перехода к отдельной странице Frame использует метод Navigate(), в который передается тип страницы. Так, у нас по умолчанию в проекте есть одна страница MainPage, и изменим метод OnLaunched(), чтобы в качестве контента окна загружалась именно эта страница:

protected override void OnLaunched(LaunchActivatedEventArgs e)
{
	Frame frame = new Frame();
    Window.Current.Content = frame;
    frame.Navigate(typeof(MainPage));
    Window.Current.Activate();
}

Управление видом приложения

Платформа Universal Windows Platform предоставляет нам класс Windows.UI.ViewManagement.ApplicationView, который позволяет управлять представлением приложения. В частности, в нем определены следующие методы и свойства:

  • GetForCurrentView(): статический метод, который возвращает объект ApplicationView, связанный с текущим приложением

  • SetPreferredMinSize(Size minSize): устанавливает минимальные значения для высоты и ширины окна приложения

  • ExitFullScreenMode(): осуществляет выход из полноэкранного режима

  • SetDesiredBoundsMode(): устанавливает предпочтительные границы для окна приложения

  • Title: задает заголовок окна приложения

  • TitleBar: возвращает ссылку на верхнюю панель окна приложения или TitleBar

  • VisibleBounds: возвращает ссылку на границы окна приложения

Используя эти методы и свойства, мы динамически можем управлять внешним видом приложения. Если наша цель - сразу задать приложению некоторые параметры, которые не должны меняться в течение работы приложения, то лучше это сделать в главном классе приложения App.xaml.cs в методе OnLaunched(). Однако при необходимости мы их можем вызвать в любом месте приложения. Например, из кода главной страницы приложения:

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();

        // получаем ссылку на внешний вид приложения
        Windows.UI.ViewManagement.ApplicationView appView = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView();
		// минимальный размер 300х250
        appView.SetPreferredMinSize(new Size(300, 250));
        // установка заголовка
        appView.Title = "Принципиально новое приложение";
        // получаем ссылку на TitleBar
        Windows.UI.ViewManagement.ApplicationViewTitleBar titleBar = appView.TitleBar;
        // установка красного цвета панели
        titleBar.BackgroundColor = Windows.UI.Colors.Red;
    }
}

Окно приложения после запуска:

Вид приложения в Universal Windows Platform
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850