- •Атрибуты в среде .Net и языке c#.
- •Метаданные
- •Понятие атрибутов
- •Предопределенные и собственные атрибуты
- •Потребители атрибутов
- •Применение атрибутов
- •Сокращенное именование атрибутов
- •Создание собственных атрибутов:
- •Применение собственных атрибутов:
- •Ограничение использования атрибутов:
- •Атрибуты уровня сборки и модуля:
- •Рефлексия атрибутов:
- •Выводы:
- •Язык xml. Классы платформы .Net для работы с xml-данными.
- •Синтаксис xml
- •Работа с xml при помощи System.Xml
- •Работа с xml при помощи linq to xml
- •Выводы:
- •Потоковый ввод-вывод. Файлы. Работа с файлами и каталогами. Пространство имен System.Io
- •Классы Directory (DirectoryInfo) и File (FileInfo) Некоторые общие свойства классов DirectoryInfo и FileInfo:
- •Дополнительные возможности класса DirectoryInfo
- •Дополнительные возможности класса FileInfo
- •Дополнительные члены File
- •Потоковый ввод-вывод
- •Работа с классом FileStream
- •Работа с классами StreamWriter и StreamReader
- •Классы StringWriter и StringReader
- •Работа с классами BinaryWriter и BinaryReader
- •Выводы:
- •Сериализация. Атрибуты. Стандартные форматы сериализации. Понятие сериализации объектов
- •Роль графов объектов
- •Конфигурирование объектов для сериализации
- •Общедоступные поля, приватные поля и общедоступные свойства
- •Стандартные форматеры сериализации
- •Настройка сериализации с использованием атрибутов
- •Выводы:
- •Понятие бд и субд. Язык sql. Ado.Net как средство доступа из c# к субд. Понятие бд
- •Понятие субд
- •Обзор синтаксиса
- •Подключенный уровень
- •Автономный уровень
- •Основные свойства класса DataSet
- •Основные методы класса DataSet
- •Типы DataColumn и DataRow
- •Основные члены типа DataColumn:
- •Основные члены типа DataRow:
- •Работа с адаптерами данных:
- •Основные члены класса DbDataAdapter:
- •Параллельные вычисления. Многозадачность и многопоточность.
- •Некоторые члены класс Process:
- •Некоторые члены класса ProcessThread
- •Домены приложений
- •Некоторые члены класс AppDomain:
- •Многопоточность. Классификация состояний потока. Средства многопоточного программирования System.Threading.
- •Некоторые члены пространства имен System.Threading
- •Основные члены класс Thread
- •Состояния потока
- •Многопоточное программирование при помощи асинхронных вызовов делегатов
- •Создание вторичных потоков при помощи Thread.Start()
- •Синхронизация с помощью lock
- •Синхронизация с использованием типа System.Threading.Monitor
- •Синхронизация с использованием типа System.Threading.Interlocked
- •Синхронизация с использованием атрибута [Synchronization]
- •Использование System.Threading.Timer
- •Пул потоков clr
- •Библиотека Windows.Forms. Пространства имен. Структура приложения. Элементы управления. События. Иерархия элементов управления.
- •Основные пространства имен Windows Forms
- •Структура приложения WinForms
- •Элементы управления
- •События
- •Библиотека wpf. Отличия wpf от WindowsForms. Разметка xaml. Понятие Windows Presentation Foundation
- •Типы приложений wpf
- •Основные сборки wpf
- •Построение приложения wpf без xaml
- •Построение приложения wpf с использованием только xaml
- •Пример c# обработчика события для контрола, объявленного в xaml (связь кода и xaml):
- •Создание проекта
- •Знакомство с инструментами визуального конструктора wpf
Построение приложения wpf с использованием только xaml
Типичное WPF-приложение не состоит исключительно из кода, как в первом примере. Файлы кода С# дополняются связанным исходным файлом XAML, и вместе они представляют сущность конкретного Window или Application.
Расширяемый язык разметки приложений (Extensible Application Markup Language — XAML) — это основанная на XML грамматика, позволяющая определять состояние (и до некоторой степени функциональность) дерева объектов .NET через разметку.
Учитывая тот факт, что XAML является просто декларативным способом определения состояния объекта, элементы управления WPF можно определять через разметку либо в процедурном коде. Например, следующий код XAML:
<Button Name="btnClickMe" Height="40м" Width="100" Content="Click Me"/>
может быть представлен программно так:
Button btnClickMe = new Button();
btnClickMe.Height = 40;
btnClickMe.Width = 100;
btnClickMe.Content = "Click Me";
Пример реализации окна программы при помощи XAML:
<!-- Определение класса Window -->
<Window x:Class ="SimpleXamlApp.MainWindow"
Xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"
Title ="A Window built using 100% XAML"
Height ="200"
Width ="300"
WindowStartupLocation ="CenterScreen">
<!-- Это окно имеет в качестве содержимого единственную кнопку -->
<Button x:Name="btnExitApp" Width="133"
Height="24" Content = "Close Window" Click ="btnExitApp_Clicked" />
<!-- Реализация обработчика события кнопки Click -->
<x:Code>
<![CDATA[
private void btnExitApp_Clicked (object sender, RoutedEventArgs e)
{
this.Close ();
}
]]>
</x:Code>
</Window>
Пример c# обработчика события для контрола, объявленного в xaml (связь кода и xaml):
Объявление контрола:
<Button Height="23"
HorizontalAlignment="Left"
Margin="20,26,0,0"
Name="button1"
VerticalAlignment="Top"
Width="75"
Content="Click here"
Click="button1_Click"/>
Объявление обработчика в коде:
public partial class Window1 : Window
{
...
private void button1_Click(object sender, RoutedEventArgs e)
{
// ...
}
}
Техника визуальной разработки приложений в WPF+C#.
Создание проекта
В диалоговом окне New Project (Новый проект) среды Visual Studio определен набор рабочих пространств проектов WPF, и все они расположены в узле Windows корня Visual C#. Рассмотрим создание обычного пиложения. Для этого необходимо выбрать пункт WPF Application (Приложение WPF),
После сознания прототипа приложения среда автоматически устанавливает ссылки на сборки WPF (PresentationCore.dll, PresentationFoundation.dll и WindowsBase.dll), а также создает классы-наследники Window и Application и связанные XAML-файлы. На рисунке показано окно Solution Explorer для этого нового проекта