Я хочу рассказать вам о такой технологии как Windows Presentation Foundation (WPF), первая версия которой появилась в .NET FW 3.0. Эта технология позволяет разделить создание интерфейса для приложения между разработчиком и дизайнером. Теперь для того чтобы сделать привлекательный интерфейс программист вовсе и не нужен. В то время как дизайнер создает богатейший анимацией интерфейс, программист занят только бизнес логикой. Ранее мы использовали WinForms который жестко связан с особенностями Windows. WinForms основывается на интерфейсе Windows API при создании внешнего вида стандартных элементов пользовательского интерфейса. И если мы хотели создать красивую кнопку, приходилось создавать специальный элемент управление и рисовать все состояния с помощью низкоуровневой модели рисования (GDI).

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

WPF не зависит от разрешения экрана, все измеряется в аппаратно-независимых единицах:

[Размер физического элемента] = [Размер аппаратно-независимой единицы] Х [DPI системы] = 1/96 дюйма Х 96 dpi = 1 пиксель.
Если значение DPI системы равно 120:
1/96 дюйм X 120 dpi = 1,25 пикселей.

Итак наверное хватит уже теории давайте перейдем к рассмотрению. Создаем новое WPF приложение и перед вами должно создаться окно а в низу разметка окна на языке XAML (Extensible Application Markup Language) – это язык разметки используемый для создания объектов технологии .NET.

<Window x:Class="WPFTest.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">
    <Grid>
        
    </Grid>
</Window>

Первый элемент это Window. Window как вы уже могли догадаться и есть наше окно =). x:Class="WPFTest.Window1" указывает на класс в котором находится реализация Окна. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml — подключается два пространства имен WPF в которых находятся все базовые типы. Title — имя отображаемое в заголовке окна, Height и Width высота и ширина окна и закрывающий тег. Далее это содержимое окна или Content. Grid это дочерний элемент для всего что будет находится в окне. Давайте удалим <Grid></Grid> и напишем <StackPanel></StackPanel>. Теперь дочерним элементом всего содержимого окна будет StackPanel (это не обычная панель которую вы привыкли видеть в WinForms). Теперь внутри StackPanel создадим кнопку и надпись:

<StackPanel>
   <Button>Click Me!</Button>
   <TextBlock>Text</TextBlock>
</StackPanel>

Запустите и попробуйте растянуть и сжать окно. Все содержимое растягивается и масштабируется вместе с окном. В WPF содержимым кнопки или любого другого элемента может быть что угодно. В кнопку можно вложить еще одну кнопку или чекбокс.

<StackPanel>
   <Button>
 	 <StackPanel>
        <TextBlock>Text In Button</TextBlock>
        <CheckBox>ChecckBox In Button</CheckBox>
        <Button>Button In Button</Button>
     </StackPanel>
   </Button>
</StackPanel>

В XAML можно написать, как вы выдели выше, а можно и вот так:

<Button Content="MyButton" />

А возможно и так:

<Button>
   <Button.Content>
      <TextBlock>TextIn Button</TextBlock>
   </Button.Content>
</Button>

Зная и применяя WPF вы с легкостью в будущем сможете перейти на Microsoft Silverlight. Silverlight – это облегченная версия WPF!