
- •Программирование с использованием wpf
- •Разметка
- •Код программной части
- •Класс приложения
- •Безопасность
- •Элементы управления wpf по функциям
- •Двухмерные формы
- •Двухмерная геометрия
- •Документы нефиксированного формата
- •Документы фиксированного формата
- •Документы xps
- •Заметки
- •Модель содержимого
- •Шаблоны данных
- •Ресурсы
- •Темы и обложки
- •Пользовательские элементы управления
- •Разделы общих сведений
- •Примеры
Класс приложения
Как приложения XBAP, так и автономные приложения часто являются достаточно сложными, чтобы требовать дополнительные службы в области определения приложения, включая управление запуском и временем существования, а также совместно используемые свойства и ресурсы. Класс Application инкапсулирует эти службы и многое другое; он может быть реализован только с помощью XAML, как показано в следующем примере.
XAML
Копировать
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
StartupUri="MainWindow.xaml" />
Эта разметка является определением приложения для автономного приложения и приказывает WPF создать объект Application, который автоматически открывает окно MainWindow при запуске приложения.
Ключевым принципом для понимания Application является то, что он предоставляет общую платформу поддержки для автономных приложений и приложений, размещенных в браузере. Например, приведенный выше XAML-код может использоваться размещаемым в браузере приложением для автоматического перехода на страницу при запуске XBAP, как показано в следующем примере.
XAML
Копировать
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
StartupUri="HomePage.xaml" />
Дополнительные сведения см. в разделе Общие сведения об управлении приложением.
Безопасность
Безопасность важна, поскольку XBAP размещается в браузере. В частности, изолированная зона безопасности частичного доверия используется XBAP для наложения ограничений, которые меньше или равны ограничениям, накладываемым на приложения, основанные на HTML. Кроме того, каждая функциональная возможность HTML, которая является безопасной для запуска из XBAP в режиме частичного доверия, проверяется с помощью механизма безопасности, рассматриваемого в Стратегия безопасности WPF — проектирование безопасности.
По-прежнему большинство возможностей WPF могут безопасно запускаться из XBAP, как описано в Безопасность частичного доверия в WPF.
Элементы управления
Взаимодействия с пользователем, предоставляемые моделью приложения, являются сконструированными элементами управления. В WPF "элемент управления" ― это основное понятие, относящееся к категории классов WPF, которые расположены в окне или на странице, имеют пользовательский интерфейс и реализуют некоторое поведение.
Дополнительные сведения см. в разделе Элементы управления.
Элементы управления wpf по функциям
Далее перечислены встроенные элементы управления WPF.
-
Кнопки: Button и RepeatButton.
-
Отображение данных: DataGrid, ListView и TreeView.
-
Выбор и отображение дат: Calendar и DatePicker.
-
Диалоговые окна: OpenFileDialog, PrintDialog и SaveFileDialog.
-
Рукописный фрагмент: InkCanvas и InkPresenter.
-
Документы: DocumentViewer, FlowDocumentPageViewer, FlowDocumentReader, FlowDocumentScrollViewer и StickyNoteControl.
-
Ввод: TextBox, RichTextBox и PasswordBox.
-
Структура: Border, BulletDecorator, Canvas, DockPanel, Expander, Grid, GridView, GridSplitter, GroupBox, Panel, ResizeGrip, Separator, ScrollBar, ScrollViewer, StackPanel, Thumb, Viewbox, VirtualizingStackPanel, Window и WrapPanel.
-
Мультимедиа: Image, MediaElement и SoundPlayerAction.
-
Меню: ContextMenu, Menu и ToolBar.
-
Переходы: Frame, Hyperlink, Page, NavigationWindow и TabControl.
-
Выбор: CheckBox, ComboBox, ListBox, RadioButton и Slider.
-
Информация пользователя: AccessText, Label, Popup, ProgressBar, StatusBar, TextBlock и ToolTip.
Ввод и команды
Элементы управления наиболее часто обнаруживают входные данные пользователя и отвечают на них. Система ввода WPF использует прямые и перенаправленные события для поддержки ввода текста, управления фокусом и позиционирования мыши. Дополнительные сведения см. в разделе Общие сведения о входных данных.
Приложения часто предъявляют сложные требования к вводу данных. WPF предоставляет систему команд, в которой действия пользователя по вводу данных отделяются от кода, который отвечает на эти действия. Дополнительные сведения см. в разделе Общие сведения о системе команд.
Макет
При создании Пользовательский интерфейс происходит упорядочивание элементов управления по расположению и размеру для формирования структуры. Основным требованием любой структуры является адаптируемость к изменениям размера окна и параметрам отображения. Чтобы не пришлось создавать код для адаптации структуры в таких обстоятельствах, WPF предоставляет первоклассную расширяемую систему структуры.
Основой системы структуры является относительное позиционирование, что увеличивает способность адаптации к изменяемому окну и условиям отображения. Кроме того, система структуры управляет согласованием между элементами управления для определения структуры. Такое согласование состоит из двух этапов: сначала элемент управления сообщает родительскому элементу, какое расположение и размер требуется; затем родительский элемент сообщает элементу управления, какое пространство он может занять.
Дочерние элементы управления получают доступ к системе макета через базовые классы WPF. Для распространенных макетов, таких как сетки, вложение и закрепление, WPF включает несколько элементов управления макетом.
-
Canvas : дочерние элементы управления предоставляют свои собственные макеты.
-
DockPanel : дочерние элементы управления выравниваются по краям панели.
-
Grid : дочерние элементы управления располагаются по строкам и столбцам.
-
StackPanel : дочерние элементы управления располагаются либо горизонтально, либо вертикально.
-
VirtualizingStackPanel : дочерние элементы управления являются виртуальными и располагаются в одной горизонтальной или вертикальной строке.
-
WrapPanel : дочерние элементы управления располагаются в порядке слева-направо и переносятся на следующую строку, когда в текущей строке не хватает места.
В следующем примере с помощью DockPanel размещаются различные элементы управления TextBox.
XAML
Копировать
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.LayoutWindow"
Title="Layout with the DockPanel" Height="143" Width="319">
<!--DockPanel to layout four text boxes-->
<DockPanel>
<TextBox DockPanel.Dock="Top">Dock = "Top"</TextBox>
<TextBox DockPanel.Dock="Bottom">Dock = "Bottom"</TextBox>
<TextBox DockPanel.Dock="Left">Dock = "Left"</TextBox>
<TextBox Background="White">This TextBox "fills" the remaining space.</TextBox>
</DockPanel>
</Window>
DockPanel позволяет дочерним элементам управления TextBox сообщать о способе их упорядочивания. Для этого DockPanel реализовывает свойство Dock, которое предоставляется дочерним элементам управления, чтобы позволить каждому из них указать стиль закрепления.
|
Свойство, которое реализовано родительским элементом управления для использования дочерними элементами управления, является конструкцией WPF, называемой вложенным свойством зависимостей (см. Общие сведения о вложенных свойствах зависимостей). |
На следующем рисунке показан результат разметки XAML из предыдущего примера.
Дополнительные сведения см. в разделе Макет. Ознакомительный пример см. в файле WPF Layout Gallery Sample.
Привязка данных
Большинство приложений создаются для предоставления пользователям средств просмотра и редактирования данных. В приложениях WPF работа по хранению и доступу к данным уже обеспечена такими технологиями, как Microsoft SQL Server и ADO.NET. После обращения к данным и загрузки данных в объекты, управляемые приложением, начинается основная тяжелая работа для приложений WPF. По существу, она включает в себя две вещи:
-
копирование данных из управляемых объектов в элементы управления, где данные могут отображаться и редактироваться;
-
проверка того, что изменения, внесенные в данные с помощью элементов управления, скопированы обратно в управляемые объекты.
Чтобы упростить разработку приложений, WPF предоставляет механизм привязки данных для автоматического выполнения этих этапов. Основной единицей механизма привязки данных является класс Binding, назначение которого привязать элемент управления (цель привязки) к объекту данных (источник привязки). Это отношение показано на следующем рисунке.
В следующем примере показано, как осуществить привязку TextBox к экземпляру настраиваемого объекта Person. Реализация Person показана в следующем коде.
C#
VB
Копировать
namespace SDKSample
{
class Person
{
string name = "No Name";
public string Name
{
get { return name; }
set { name = value; }
}
}
}
Следующая разметка привязывает TextBox к экземпляру настраиваемого объекта Person.
XAML
Копировать
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.DataBindingWindow">
...
<!-- Bind the TextBox to the data source (TextBox.Text to Person.Name) -->
<TextBox Name="personNameTextBox" Text="{Binding Path=Name}" />
...
</Window>
VB
Копировать
Imports System.Windows ' Window
Namespace SDKSample
Partial Public Class DataBindingWindow
Inherits Window
Public Sub New()
InitializeComponent()
' Create Person data source
Dim person As Person = New Person()
' Make data source available for binding
Me.DataContext = person
End Sub
End Class
End Namespace
C#
Копировать
using System.Windows; // Window
namespace SDKSample
{
public partial class DataBindingWindow : Window
{
public DataBindingWindow()
{
InitializeComponent();
// Create Person data source
Person person = new Person();
// Make data source available for binding
this.DataContext = person;
}
}
}
В этом примере класс Person создается в коде программной части и задается в качестве контекста данных для DataBindingWindow. В разметке свойство Text элемента TextBox привязано к свойству Person.Name (с помощью синтаксиса XAML "{Binding ... }"). XAML указывает WPF привязать элемент управления TextBox к объекту Person, который хранится в свойстве DataContext окна.
Механизм привязки данных WPF предоставляет дополнительную поддержку, включающую проверку, сортировку, фильтрацию и группировку. Кроме того, привязка данных поддерживает использование шаблонов данных для создания настраиваемого Пользовательский интерфейс, чтобы связывать данные, когда Пользовательский интерфейс отображается несоответствующими стандартными элементами управления WPF.
Дополнительные сведения см. в разделе Общие сведения о связывании данных. Ознакомительный пример см. в файле Data Binding Demo.
Графика
WPF представляет обширный, масштабируемый и гибкий набор графических возможностей, которые имеют следующие преимущества:
-
Графика, не зависящая от разрешения и устройства. Основной единицей измерения в графической системе WPF является аппаратно-независимый пиксель, который составляет 1/96 часть дюйма независимо от фактического разрешения экрана и предоставляет основу для создания изображения, независимого от разрешения и устройства. Каждый аппаратно-независимый пиксель автоматически масштабируется в соответствии с числом точек на дюйм в системе, в которой он отображается.
-
Повышенная точность. В системе координат WPF используются числа с плавающей запятой двойной точности, вместо одиночной точности. Значения преобразований и прозрачности также выражаются с помощью чисел двойной точности. Кроме того, WPF поддерживает широкую цветовую палитру (scRGB) и предоставляет встроенную поддержку для управления входными данными из различных цветовых пространств.
-
Дополнительная поддержка графики и анимации. WPF упрощает программирование графики за счет автоматического управления анимацией. Разработчик не должен заниматься обработкой сцен анимации, циклами отрисовки и билинейной интерполяцией. Кроме того, WPF предоставляет поддержку проверки нажатия и полную поддержку альфа-компоновки.
-
Аппаратное ускорение. Графическая система WPF использует преимущества графического оборудования, чтобы уменьшить использование ЦП.