Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование на C# для чайников


Windows Presentation Foundation (WPF). Урок 2. Введение в XAML.

Больше статей: www.easyprog.ru

Если понять несколько основополагающих правил XAML, то этот язык будет вполне очевиден.  Вот эти правила:

  • Каждый элемент XAML отображается на экземпляр класса .NET, при чем имя элемента в точности соответствует имени класса.
  • Подобно любому XML документу, код XAML допускает вложение одного элемента внутрь другого.
  • Свойства каждого класса можно устанавливать через атрибуты.

И так, давайте для начала рассмотрим XAML файл пустого WPF-приложения, которое появляется при создании WPF проекта:

<Window x:Class="WpfApplication2.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="MainWindow" Height="350" Width="525">

    <Grid>

       

    </Grid>

</Window>

 И что же мы видим: верхний уровень - элемент Windows. Он соответствует классу окна. от него объявлен класс MainWindows, находящийся в пространстве имен WpfApplication2.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

 

namespace WpfApplication2

{

    /// <summary>

    /// Логика взаимодействия для MainWindow.xaml

    /// </summary>

    public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

        }

    }

}

В окно вложен объект Grid - контейнер, предназначенный для размещения в нем элементов управления:

Windows Presentation Foundation (WPF). Урок 2. Введение в XAML.

Мы можем добавить к контейнеру, например, кнопку:

Windows Presentation Foundation (WPF). Урок 2. Введение в XAML.

и она появиться в качестве XAML элемента:

<Window x:Class="WpfApplication2.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="MainWindow" Height="350" Width="525">

    <Grid>

        <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="32,22,0,0" Name="button1" VerticalAlignment="Top" Width="75" />

    </Grid>

</Window>

Как правило, элементами верхнего уровня XAML документа могут быть:

  • Windows (или NavigationWindow, см .предыдущий урок).
  • Page.
  • Application.

XAML документ может содержать только один элемент верхнего уровня.

Поскольку недостаточно просто указать имя класса, ведь компьютеру нужн еще знать, где искать данный класс. Поэтому в XAML предусмотрен специальный аргумент xmlns, в котором задается пространство имен. Одно и тоже пространство имен может быть задано один раз, в дальнейшем анализатор XAML будет обращаться к нему для поиска указанных классов.

Пространство имен http://schemas.microsoft.com/winfx/2006/xaml/presentation является основным пространством имен WPF. В нем есть все классы WPF, включая элементы управления.

Пространство имен http://schemas.microsoft.com/winfx/2006/xaml включает в себя различные служебные свойства XAML, которые позволяют влиять на то, как интерпретируется документ.

Пространства имен выглядят как адреса URL, из за этого можно подумать, что они указывают на какое то место в Интернете, хотя это не так. Это сделано для того, что бы избежать случаев, когда разные организации создадут разные языки XAML с одинаковыми пространствами имен. Поскольку домен schemas.microsoft.com принадлежит Microsoft, то только Microsoft использует его названии пространств имен. Еще немаловажная особенность: пространства имен XAML не повторяют мена пространств имен .NET, как вы это уже успели заметить. Так что одно пространств имен XAML объединяет объект из разны пространств имен .NET.

У объектов XAML можно указывать имя (Name):

<Window x:Class="WpfApplication1.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="MainWindow" Height="350" Width="525">

    <Grid Name="myGrid" Width="150"></Grid>

</Window>

Это дает возможность обращаться к ним из текста программы на C#, например так:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

 

namespace WpfApplication1

{

    /// <summary>

    /// Логика взаимодействия для MainWindow.xaml

    /// </summary>

    public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

            MessageBox.Show("Ширина сетки: "+myGrid.Width.ToString());

        }

 

 

    }

}

Запустив данную программу мы сначала увидим окно сообщения о размере объекта Grid:

Windows Presentation Foundation (WPF). Урок 2. Введение в XAML.

А уже потом окно основной программы:

Windows Presentation Foundation (WPF). Урок 2. Введение в XAML.

Мы можем кинуть на форму кнопочку и вызывать сообщение о ширине сетки по кнопочке:

Windows Presentation Foundation (WPF). Урок 2. Введение в XAML.

сделав у нее такой вот обработчик событий:

        private void button1_Click(object sender, RoutedEventArgs e)

        {

            MessageBox.Show("Ширина сетки: " + myGrid.Width.ToString());

        }

В этом случае сведение о ширине сетки мы будем получать при нажатии на кнопочку:

Windows Presentation Foundation (WPF). Урок 2. Введение в XAML.

 

 


В избранное