'

Программирование на C# 4 и .NET 4

Понравилась презентация – покажи это...





Слайд 0

Программирование на C# 4 и .NET 4 Лекция 15. WPF


Слайд 1

Шаблон элемента управления Элементы управления WPF спроектированы таким образом, чтобы полностью отделить функциональность элемента от его визуального оформления Чтобы по новому оформить пользовательский интерфейс элемента WPF, нужно создать новый шаблон элемента управления Шаблон элемента – XAML, описывающий оформление элемента управления Шаблон элемента управления определяется в элементе <ControlTemplate> <Button Content="Button" Width="100" Height="30"> <Button.Template> <ControlTemplate> <Rectangle Fill="RoyalBlue"/> </ControlTemplate> </Button.Template> </Button>


Слайд 2

ControlTemplate Для отображения содержимого элемента управления в шаблоне элемента управления используются элементы <ContentPresenter> для элементов управления содержимым (для отображения свойства Content) <ItemsPresenter> для элементов элементами (для отображения свойства Items) Для правильной работы <…Presenter> необходимо указать атрибут TargetType у ControlTemplate <ControlTemplate TargetType="{x:Type Button}"> <Border BorderBrush="Chocolate" BorderThickness="3"> <Grid> <Rectangle Fill="RoyalBlue"/> <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/> </Grid> </Border> </ControlTemplate>


Слайд 3

Шаблон как ресурс Обычно шаблоны определяются в ресурсах, что их можно было использовать многократно <Window.Resources> <ControlTemplate x:Key="ButtonTemplate" TargetType="{x:Type Button}"> ….. </ControlTemplate> </Window.Resources> <Button Template="{StaticResource ButtonTemplate}" Content="Button" Width="100" Height="30"/>


Слайд 4

Триггеры в шаблоне Триггеры задаются в коллекции ControlTemplate.Triggers Триггеры необходимо задавать в конце ControlTempplate, чтобы они имели доступ к объектам шаблона В объектах Triggers можно определять объекты Animation


Слайд 5

Свойства родителя шаблона Шаблон можно настраивать, задавая свойства элемента управления, использующего этот шаблон. Для настройки шаблона используется TemplateBinding <ControlTemplate x:Key="ButtonTemplate“ TargetType="{x:Type Button}"> <Border BorderThickness="{TemplateBinding BorderThickness}"> … <Button Template="{StaticResource ButtonTemplate}" BorderThickness="3"> Другой способ, использование Binding Fill="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Background}“


Слайд 6

Применение шаблонов в стиле Можно использовать стили для автоматического применения шаблона всем элементам данного типа <Style TargetType="{x:Type Button}"> <Setter Property="Template" Value="{StaticResource ButtonTemplate}"/> </Style>


Слайд 7

User и Custom Controls Пользовательские элементы управления Состоят из связаных вместе элементов управления с общей функциональностью в общем пользовательском интерфейсе Наследуют класс UserControl Шаблон проекта в VS WPF User Control Library Настраиваемые элементы управления Определяют собственное визуальное оформления и функциональность Наследуют класс Control или ContentControl Шаблон проекта в VS WPF Custom Control Library


Слайд 8

ControlTemplate Демонстрации


Слайд 9

Конвертеры Конвертер – класс, преобразующий один тип в другой XAML использует их повсеместно Преобразование строки в объект Реализует IValueConverter Методы Convert и ConvertBack object Convert(object value, Type targetType, object parameter, CultureInfo Culture)


Слайд 10

Дополнительные свойства ConverterParameter – дополнительный параметр ConverterCulture – культура конвертера Нужна для локализации


Слайд 11

Установка конвертера Для использования конвертера: Необходимо указать пространство имен, где находится конвертер <xmlns:src=“clr-namespace:MyProg> Создать в ресурсах экземпляр конвертера <src:MyConverter x:Key=“myconv”> Использовать конвертер в Binding {Binding Converter={StaticResource myconv} }


Слайд 12

Конвертер Демонстрация


Слайд 13

Привязка к данным Привязка к данным – это создание связи между двумя свойствами разных объектов Не обязательно визуальных Характеристики связи Направление Источник и получатель Динамичность (один раз или постоянно) Сложность (один к одному или привязка к коллекции)


Слайд 14

Объекты связи Binding – объекты этого класса задают связь В XAML используются расширение {Binding} В C# - объект Binding Свойства Binding Source – объект-источник привязки ElementName – UI-объект источник привязки Path – путь к свойству привязки XPath – xpath-запрос при привязке к XML Mode: OneWay, TwoWay, OneTime, OneWayToSource


Слайд 15

Простая привязка к данным Демонстрация


Слайд 16

Привязка к коллекциям Некоторые элементы отображают много элементов ListBox, ListView Особенности таких элементов: Модель содержимого – Items (элементы, значки) Можно задать ItemsSource – источник элементов


Слайд 17

Коллекции для привязки Обычные коллекции Не поддерживают динамического обновления Специальные коллекции ObservableCollection<T> Поддерживают динамическое обновление INotifyPropertyChange Позволяет реализовывать оповещение изменения свойства для любого элемента


Слайд 18

Простая привязка к коллекциям Демонстрация


Слайд 19

Шаблоны данных Простая привязка коллекции Вызывает ToString() Очень ограничена в применении Привязка с шаблонами данных «Второй уровень» привязки Задается шаблон В шаблоне можно осуществлять простую или сложную привязку свойств Можно делать следующий уровень иерархии и т.д.!


Слайд 20

Пример шаблона <DataTemplate x:Key="dt"> <Image Source={Binding Path=FullName}/> </DataTemplate> …. ItemTemplate="{StaticResource dt}" Осуществит привязку свойства Source рисунка к пути к файлу


Слайд 21

Шаблон панели Для ListBox можно задать шаблон панели Расположение элементов нужным образом


Слайд 22

Привязка к шаблону Демонстрация


Слайд 23


Слайд 24


Слайд 25


Слайд 26

Привязки Любое свойство можно можно связать с любым другим объектом, свойством, коллекцией. Основа привязки данных – класс Binding Связывает два свойства: источник и конечное свойство


Слайд 27

Класс Binding ElementName – имя элемента-источника при привязке к элементу WPF Source – имя объекта при привязке не к элементу WPF Path – путь к свойству в объекте-источнике Mode – направление привязки RelativeSource – задает источник связывания, относительно текущего элемента в визуальном дереве.


Слайд 28

Привязка к элементу WPF <Slider Name="Slider1" Minimum="0" Maximum="100" SmallChange="1"/> <Label Height="25" Width="100"> <Label.Content> <Binding ElementName="Slider1" Path="Value"/> </Label.Content> </Label> <Label Height="25" Width="100" Content="{Binding ElementName=Slider1, Path=Value}« Margin="202,174,200,112" />


Слайд 29

Привязка к объекту Привязка к статическому объекту системы <Label Background="{Binding Source={x:Static SystemColors.WindowColor}}"/> Привязка к объекту <Window.Resources> <MyClass x:Key="myClass"/> </Window.Resources> <TextBox Text="{Binding Source={StaticResource myClass}, Path=MyString, Mode=TwoWay}" />


Слайд 30

Привязки Демонстрация


×

HTML:





Ссылка: