Оглавление
Благодарности
Автор и читатели — одна команда
Часть II. Основы программирования на C#
Часть III. Объектно-ориентированное программирование на C#
Часть IV. Дополнительные конструкции программирования на C#
Часть V. Программирование с использованием сборок .NET
Часть VI. Введение в библиотеки базовых классов .NET
Часть VII. Windows Presentation Foundation
Загружаемые приложения
От издательства
Часть I. Введение в C# и платформу .NET
Роль библиотек базовых классов
Что привносит язык C#
Другие языки программирования, ориентированные на .NET
Обзор сборок .NET
Роль метаданных типов .NET
Роль манифеста сборки
Типы интерфейсов CTS
Типы перечислений CTS
Встроенные типы данных CTS
Обеспечение совместимости с CLS
Различия между сборками, пространствами имен и типами
Доступ к пространству имен программным образом
Ссылка на внешние сборки
Исследование сборки с помощью утилиты ildasm.exe
Просмотр метаданных типов
Независимая от платформы природа .NET
Несколько слов по поводу приложений Windows 8
Роль .NET в среде Windows 8
Резюме
Глава 2. Создание приложений на языке C#
Построение приложений C# с использованием csc.exe
Ссылка на внешние сборки
Компиляция нескольких файлов исходного кода
Работа с ответными файлами в C#
Построение приложений .NET с использованием Notepad++
Построение приложений .NET с помощью SharpDevelop
Построение приложений .NET с помощью Visual Studio
Использование утилиты Solution Explorer
Утилита Object Browser
Встроенная поддержка рефакторинга кода
Фрагменты кода и технология Surround With
Утилита Class Designer
Интегрированная система документации . NET Framework 4.5 SDK
Резюме
Часть II. Основы программирования на C#
Указание кода ошибки приложения
Обработка аргументов командной строки
Указание аргументов командной строки в Visual Studio
Интересное отступление от темы: некоторые дополнительные члены класса System.Environment
Knacc System.Console
Форматирование консольного вывода
Форматирование числовых данных
Системные типы данных и соответствующие ключевые слова C#
Внутренние типы данных и операция new
Иерархия классов для типов данных
Члены числовых типов данных
Синтаксический разбор значений из строковых данных
Сборка System.Numerics.dll
Работа со строковыми данными
Конкатенация строк
Управляющие последовательности
Строки и равенство
Строки являются неизменяемыми
Тип System.Text.StringBuilder
Сужающие и расширяющие преобразования типов данных
Настройка проверки переполнения на уровне всего проекта
Ключевое слово unchecked
Понятие неявно типизированных локальных переменных
Польза от неявно типизированных локальных переменных
Итерационные конструкции С#
Цикл foreach
Циклы while и do/while
Операции равенства и сравнения
Оператор switch
Резюме
Глава 4. Главные конструкции программирования на C#: часть II
Модификатор out
Модификатор ref
Модификатор params
Определение необязательных параметров
Вызов методов с использованием именованных параметров
Понятие перегрузки методов
Массивы в C#
Определение массива объектов
Работа с многомерными массивами
Использование массивов в качестве аргументов и возвращаемых значений
Базовый класс System.Array
Тип enum
Объявление переменных типа перечисления
Тип System.Enum
Динамическое извлечение пар “имя/значение” перечисления
Типы структур
Типы значений и ссылочные типы
Типы значений, содержащие ссылочные типы
Передача ссылочных типов по значению
Передача ссылочных типов по ссылке
Заключительные детали относительно типов значений и ссылочных типов
Понятие типов, допускающих null, в C#
Операция ??
Резюме
Часть III. Объектно-ориентированное программирование на C#
Понятие конструкторов
Определение специальных конструкторов
Еще раз о стандартном конструкторе
Роль ключевого слова thi s
Обзор потока конструктора
Еще раз о необязательных аргументах
Понятие ключевого слова stаtiс
Определение статических методов
Определение статических конструкторов
Определение статических классов
Основные принципы объектно-ориентированного программирования
Роль наследования
Роль полиморфизма
Модификаторы доступа C#
Первый принцип: службы инкапсуляции C#
Использование свойств внутри определения класса
Свойства, доступные только для чтения и только для записи
Еще раз о ключевом слове stаtiс: определение статических свойств
Понятие автоматических свойств
Замечания относительно автоматических свойств и стандартных значений
Понятие синтаксиса инициализации объектов
Инициализация вложенных типов
Работа с данными константных полей
Понятие частичных типов
Резюме
Глава 6. Понятие наследования и полиморфизма
Ключевое слово seаled
Изменение диаграмм классов Visual Studio
Второй принцип ООП: подробности о наследовании
Хранение секретов семейства: ключевое слово protected
Реализация модели включения/делегации
Третий принцип ООП: поддержка полиморфизма в C#
Переопределение виртуальных членов в IDE-среде Visual Studio
Абстрактные классы
Понятие полиморфного интерфейса
Сокрытие членов
Правила приведения к базовому и производному классу
Главный родительский класс System.Object
Тестирование модифицированного класса Person
Резюме
Глава 7. Структурированная обработка исключений
Роль обработки исключений .NET
Базовый класс System. Exception
Простейший пример
Перехват исключений
Конфигурирование состояния исключения
Свойство StackTrace
Свойство Data
Построение специальных исключений, способ первый
Построение специальных исключений, способ второй
Построение специальных исключений, способ третий
Обработка нескольких исключений
Повторная генерация исключений
Внутренние исключения
Какие исключения могут генерировать методы?
Результат наличия необработанных исключений
Резюме
Глава 8. Работа с интерфейсами
Определение специальных интерфейсов
Реализация интерфейса
Вызов членов интерфейса на уровне объектов
Получение ссьшок на интерфейсы: ключевое слово is
Использование интерфейсов в качестве параметров
Массивы интерфейсных типов
Реализация интерфейсов с использованием Visual Studio
Явная реализация интерфейсов
Проектирование иерархий интерфейсов
Интерфейсы IEnumerable и IEnumerator
Построение именованного итератора
Интерфейс ICloneable
Интерфейс IComparable
Специальные свойства и специальные типы сортировки
Резюме
Часть IV. Дополнительные конструкции программирования на C#
Обзор пространстваимен System.Collections.Specialized
Проблемы, связанные с необобщенными коллекциями
Проблемы с безопасностью типов
Первый взгляд на обобщенные коллекции
Роль параметров обобщенных типов
Указание параметров типов для обобщенных интерфейсов
Пространство имен System.Collections.Generic
Работа с классом List<T>
Работа с классом Queue<T>
Работа с классом SortedSet<T>
Пространство имен System.Collections.ObjectModel
Создание специальных обобщенных методов
Создание специальных обобщенных структур и классов
Ограничение параметров типа
Недостаток ограничений операций
Резюме
Глава 10. Делегаты, события и лямбда-выражения
Определение типа делегата в C#
Базовые классы System.MulticastDelegate и System.Delegate
Пример простейшего делегата
Отправка уведомлений о состоянии объекта с использованием делегатов
Удаление целей из списка вызовов делегата
Синтаксис групповых преобразований методов
Понятие обобщенных делегатов
Понятие событий C#
“За кулисами” событий
Прослушивание входящих событий
Упрощенная регистрация событий с использованием Visual Studio
Создание специальных аргументов событий
Понятие анонимных методов C#
Понятие лямбда-выражений
Обработка аргументов внутри множества операторов
Лямбда-выражения с несколькими параметрами и без параметров
Усовершенствование примера PrimAndProperCarEvents за счет использования лямбда-выражений
Резюме
Глава 11. Расширенные средства языка C#
Перегрузка методов-индексаторов
Многомерные индексаторы
Понятие перегрузки операций
Перегрузка унарных операций
Перегрузка операций эквивалентности
Перегрузка операций сравнения
Понятие специальных преобразований типов
Создание специальных процедур преобразования
Определение процедур неявного преобразования
Понятие расширяющих методов
Понятие анонимных типов
Определение анонимного типа
Работа с типами указателей
Работа с операциями * и &
Закрепление типа с помощью ключевого слова fixed
Ключевое слово sizeоf
Резюме
Глава 12. LINQ to Objects
Синтаксис инициализации объектов и коллекций
Лямбда-выражения
Анонимные типы
Роль LINQ
Основные сборки LINQ
Применение запросов LINQ к элементарным массивам
Рефлексия результирующего набора LINQ
LINQ и неявно типизированные локальные переменные
LINQ и расширяющие методы
Роль немедленного выполнения
Возврат результата запроса LINQ
Применение запросов LINQ к объектам коллекций
Применение запросов LINQ к необобщенным коллекциям
Исследование операций запросов LINQ
Получение подмножества данных
Проецирование новых типов данных
Выражения сортировки
LINQ как лучшее средство построения диаграмм
Агрегатные операции LINQ
Внутреннее представление операторов запросов LINQ
Построение выражений запросов с использованием типа Enumerable и лямбда-выражений
Построение выражений запросов с использованием типа Enumerable и низкоуровневых делегатов
Резюме
Глава 13. Время жизни объектов
Базовые сведения о времени жизни объектов
Установка объектных ссылок в null
Роль корневых элементов приложения
Понятие поколений объектов
Параллельная сборка мусора в .NET 1.0 — .NET 3.5
Тип System.GC
Построение финализируемых объектов
Описание процесса финализации
Создание освобождаемых объектов
Создание финализируемых и освобождаемых типов
Ленивое создание объектов
Резюме
Часть V. Программирование с использованием сборок .NET
Создание вложенных пространств имен
Роль сборок .NET
Сборки являются единицами, поддерживающими версии
Формат сборки .NET
Заголовок файла CLR
CIL-код, метаданные типов и манифест сборки
Построение и использование специальной библиотеки классов
Исследование CIL-кода
Построение клиентского приложения на C#
Построение клиентского приложения на Visual Basic
Межъязыковое наследование в действии
Понятие процесса зондирования
Конфигурирование закрытых сборок
Роль файла Арр.Config
Понятие разделяемых сборок
Понятие строгих имен
Генерация строгих имен в командной строке
Гёнерация строгих имен в Visual Studio
Установка строго именованных сборок в GAC
Использование разделяемой сборки
Конфигурирование разделяемых сборок
Построение разделяемой сборки версии 2.0.0.0
Динамическое перенаправление на специфичные версии разделяемой сборки
Понятие сборок политик издателя
Элeмeнт <codeBase>
Пространствоимен System.Configuration
Резюме
Глава 15. Рефлексия типов, позднее связывание и программирование с использованием атрибутов
Исследование блока TypeRef
Документирование строковых литералов
Понятие рефлексии
Построение специального средства для просмотра метаданных
Рефлексия реализованных интерфейсов
Отображение различных дополнительных деталей
Рефлексия параметров и возвращаемых значений методов
Динамически загружаемые сборки
Рефлексия разделяемых сборок
Позднее связывание
Вызов методов без параметров
Вызов методов с параметрами
Роль атрибутов .NET
Применение атрибутов в C#
Сокращенная нотация атрибутов C#
Атрибут [Obsolete] вдействии
Построение специальных атрибутов
Ограничение использования атрибутов
Атрибуты уровня сборки
Рефлексия атрибутов с использованием раннего связывания
Рефлексия атрибутов с использованием позднего связывания
Возможное применение на практике рефлексии, позднего связывания и специальных атрибутов
Построение расширяемого приложения
Построение оснастки на C#
Построение оснастки на Visual Basic
Построение расширяемого приложения Windows Forms
Резюме
Глава 16. Динамические типы и среда DLR
Роль сборки Microsoft.CSharp.dll
Область применения ключевого слова dynamic
Практическое применение ключевого слова dynamiс
Роль пространства имен System. Dynamic
Упрощение вызовов с поздним связыванием посредством динамических типов
Упрощение взаимодействия с СОМ посредством динамических данных
Роль основных сборок взаимодействия
Встраивание метаданных взаимодействия
Общие сложности взаимодействия с СОМ
Взаимодействие с СОМ с использованием динамических данных C#
Резюме
Глава 17. Процессы, домены приложений и объектные контексты
Взаимодействие с процессами на платформе .NET
Исследование набора потоков процесса
Исследование набора модулей процесса
Запуск и останов процессов программным образом
Управление запуском процесса с использованием класса ProcessStartInfo
Домены приложений .NET
Взаимодействие со стандартным доменом приложения
Создание новых доменов приложений
Выгрузка доменов приложений программным образом
Контекстные границы объектов
Исследование контекста объекта
Резюме
Глава 18. Язык СИ и роль динамических сборок
Директивы, атрибуты и коды операций CIL
Роль кодов операций CIL
Основанная на стеке природа CIL
Возвратноепроектирование
Взаимодействие с CIL: модификация файла *.il
Компиляция CIL-кода с помощью ilasm.exe
Директивы и атрибуты CIL
Определение пространств имен в CIL
Определение типов классов в CIL
Определение и реализация интерфейсов в CIL
Определение обобщений в CIL
Компиляция файла CILTypes . il
Определение членов типов в CIL
Определение конструкторов типа в CIL
Определение параметров членов
Исследование кодов операций CIL
Объявление локальных переменных в CIL
Отображение параметров на локальные переменные в CIL
Представление итерационных конструкций в CIL
Создание сборки .NET на CIL
Построение сборки CILCarClient.exe
Динамические сборки
Роль типа System.Reflection.Emit.ILGenerator
Выдача динамической сборки
Выдача сборки и набора модулей
Роль типа ModuleBuilder
Выдача типа HelloClass и строковой переменной-члена
Выдача конструкторов
Использование динамически сгенерированной сборки
Резюме
Часть VI. Введение в библиотеки базовых классов .NET
Роль синхронизации потоков
Краткий обзор делегатов .NET
Асинхронная природа делегатов
Интерфейс System.IAsyncResult
Асинхронный вызов метода
Роль делегата AsyncCallback
Роль класса AsyncResult
Передача и получение специальных данных состояния
Класс System.Threading.Thread
Свойство Name
Свойство Priority
Ручное создание вторичных потоков
Работа с делегатом ParametrizedThreadStart
Класс AutoResetEvent
Потоки переднего плана и фоновые потоки
Проблемы параллелизма
Синхронизация с использованием типа System.Threading.Monitor
Синхронизация с использованием типа System.Threading.Interlocked
Синхронизация с использованием атрибута [Synchronization]
Программирование с использованием обратных вызовов Timer
Пул потоков CLR
Роль класса Parallel
Обеспечение параллелизма данных с помощью класса Parallel
Доступ к элементам пользовательского интерфейса во вторичных потоках
Обработка запроса на отмену
Обеспечение параллелизма задач с помощью класса Parallel
Выполнение запроса PLINQ
Отмена запроса PLINQ
Асинхронные вызовы в версии .NET 4.5
Соглашения об именовании асинхронных методов
Асинхронные методы, возвращающие void
Модернизация примера AddWithThreads с использованием asycn/await
Резюме
Глава 20. Файловый ввод-вывод и сериализация объектов
Абстрактный базовый класс FileSystemInfo
Работа с типом DirectoryInfo
Создание подкаталогов с помощью типа DirectoryInfo
Работа с типом Directory
Работа с типом DriveInfo
Работа с классом FileInfo
Работа с типом F i 1 e
Абстрактный класс Stream
Работа с классами StreamWriter и StreamReader
Чтение из текстового файла
Прямое создание экземпляров классов StreamWriter/StreamReader
Работа с классами StringWriter и StringReader
Работа с классами BinaryWriter и BinaryReader
Программное отслеживание файлов
Понятие сериализации объектов
Конфигурирование объектов для сериализации
Открытые поля, закрытые поля и открытые свойства
Выбор форматера сериализации
Точность типов среди форматеров
Сериализация объектов с использованием BinaryFormatter
Сериализация объектов с использованием SoapFormatter
Сериализация объектов с использованием XmlSerializer
Сериализация коллекций объектов
Настройка процессов сериализации SOAP и двоичной сериализации
Настройка сериализации с использованием ISeriаlizable
Настройка сериализации с использованием атрибутов
Резюме
Глава 21. ADO.NET, часть I: подключенный уровень
Поставщики данных ADO.NET
Дополнительные пространства имен ADO.NET
Типы из пространства имен System.Data
Роль интерфейса IDbTransaction
Роль интерфейсов IDbDataParameter и IDataParameter
Роль интерфейсов IDataReader и IDataRecord
Абстрагирование поставщиков данных с помощью интерфейсов
Создание базы данных AutoLot
Занесение тестовых записей в таблицу Inventory
Создание таблиц Customers и Orders
Визуальное создание отношений между таблицами
Модель фабрик поставщиков данных ADO.NET
Потенциальный недостаток модели фабрик поставщиков данных
Элемент <connectionStrings>
Понятие подключенного уровня ADO.NET
Работа с объектами ConnectionStringBuilder
Работа с объектами команд
Работа с объектами чтения данных
Создание многократно используемой библиотеки доступа к данным
Добавление логики вставки
Добавление логики удаления
Добавление логики выборки
Работа с параметризированными объектами команд
Выполнение хранимой процедуры
Создание приложения с консольным пользовательским интерфейсом
Понятие транзакций базы данных
Добавление метода транзакции в InventoryDAL
Тестирование транзакции базы данных
Резюме
Глава 22. AD0.NET, часть II: автономный уровень
Основные методы класса DatаSet
Создание DataSet
Работа с объектами DataColumn
Добавление объектов DataColumn в DataTable
Работа с объектами DataRow
Свойство DataRowVersion
Работа с объектами DatаTable
Получение данных из объекта DataSet
Обработка данных из DataTable с использованием объектов DataTableReader 807 Сериализация объектов DataTable и DataSet в формате XML
Сериализация объектов DataTable и DataSet в двоичном формате
Привязка объектов DataTable к графическим пользовательским интерфейсам Windows Forms
Удаление строк из DataTable
Выборка строк на основе критерия фильтрации
Обновление строк в DataTable
Работа с типом DataView
Работа с адаптерами данных
Отображение имен из базы данных на дружественные к пользователю имена
Добавление в AutoLotDAL.dll функциональности автономного уровня
Конфигурирование адаптера данных с использованием SqlCommandBuilder
Тестирование функциональности автономного уровня
Объекты DatаSet с несколькими таблицами и отношения между данными
Построение отношений между таблицами
Навигация между связанными таблицами
Инструменты визуального конструирования баз данных Windows Forms
Исследование строго типизированного класса DatаSet
Исследование строго типизированного класса DataTable
Исследование строго типизированного адаптера данных
Завершение приложения Windows Forms
Изоляция строго типизированного кода работы с базой данных в библиотеке классов
Выборка данных с помощью сгенерированного кода
Вставка данных с помощью сгенерированного кода
Вызов хранимой процедуры с помощью сгенерированного кода
Программирование с помощью LINQ to DataSet
Получение объекта DataTable, совместимого с LINQ
Заполнение новых объектов DataTable из запросов LINQ
Резюме
Глава 23. AD0.NET, часть III: Entity Framework
Роль служб объектов
Роль клиента сущности
Роль файла *.edmx
Роль классов 0bjectContext и 0bjectSet<T>
Собираем все вместе
Построение и анализ первой модели EDM
Изменение формы сущностных данных
Просмотр отображений
Просмотр сгенерированного файла *.edmx
Просмотр сгенерированного исходного кода
Программирование с использованием концептуальной модели
Обновление записи
Запросы с помощью LINQ to Entities
Запросы с помощью Entity SQL
Работа с объектом EntityDataReader
Проект AutoLotDAL версии 4, теперь с сущностями
Использование навигационных свойств внутри запросов LINQ to Entity
Вызов хранимой процедуры
Привязка данных сущностей к графическим пользовательским интерфейсам Windows Forms
Продолжение изучения API-интерфейсов доступа к данным в .NET
Резюме
Глава 24. Введение в LINQ to XML
Синтаксис литералов Visual Basic как наилучший интерфейс LINQ to XML
Члены пространства имен System.Xml.Linq
Работа с XElement и XDocument
Манипулирование XML-документом в памяти
Импорт файла Inventory.xml
Определение вспомогательного класса LINQ to XML
Связывание пользовательского интерфейса и вспомогательного класса
Резюме
Глава 25. Введение в Windows Communication Foundation
Роль служб COM+/Enterprise Services
Роль .NET Remoting
Роль веб-служб XML
Роль WCF
Обзор архитектуры, ориентированной на службы
WCF заключение
Исследование основных сборок WCF
Шаблоны проектов WCF в Visual Studio
Базовая структура приложения WCF
Адрес, привязка и контракт в WCF
Понятие привязок WCF
Понятие адресов WCF
Построение службы WCF
Служебные типы как контракты операций
Хостинг службы WCF
Указание базовых адресов
Подробный анализ типа ServiceHost
Включение обмена метаданными
Построение клиентского приложения WCF
Генерация кода прокси с использованием Visual Studio
Конфигурирование привязки на основе TCP
Упрощение конфигурационных настроек
Открытие одной службы WCF, использующей множество привязок
Изменение параметров привязки WCF
Использование конфигурации стандартного поведения МЕХ
Обновление клиентского прокси и выбор привязки
Использование шаблона проекта WCF Service Library
Тестирование службы WCF с помощью WcfTestClient.exe
Изменение конфигурационных файлов с помощью SvcConfigEditor.exe
Хостинг службы WCF внутри Windows-службы
Создание программы установки для Windows-службы
Установка Windows-службы
Асинхронный вызов службы из клиента
Проектирование контрактов данных WCF
Реализация контракта службы
Тестирование службы
Резюме
Глава 26. Введение в Windows Workflow Foundation
Построение простого рабочего потока
Хостинг рабочего потока с использованием класса WorkflowInvoker
Хостинг рабочего потока с использованием класса WorkflowApplication
Знакомство с действиями рабочих потоков
Действия блок-схемы
Действия конечного автомата
Действия транзакций
Построение рабочего потока в виде блок-схемы
Работа с действием InvokeMethod
Определение переменных уровня рабочего потока
Работа с действием FlowDecision
Построение условия True
Работа с действием ForEach<T>
Завершение приложения
Промежуточные итоги
Определение начального проекта
Импорт сборок и пространств имен
Определение аргументов рабочего потока
Определение переменных рабочего потока
Работа с действием Assign
Работа с действиями If и Switch
Построение специального действия кода
Использование библиотеки рабочего потока
Резюме
Часть VII. Windows Presentation Foundation
Обеспечение оптимизированной модели визуализации
Упрощение программирования сложных пользовательских интерфейсов
Различные варианты приложений WPF
Приложения XBAP
Отношения между WPF и SilverLight
Исследование сборок WPF
Роль класса System.Windows.Controls.ContentControl
Роль класса System.Windows.Controls.Control
Роль класса System.Windows.UIElement
Построение приложения WPF без XAML
Создание простого пользовательского интерфейса
Взаимодействие с данными уровня приложения
Обработка закрытия объекта Window
Перехват событий мыши
Перехват клавиатурных событий
Построение приложения WPF с использованием только XAML
Обработка файлов XAML с помощью msbuild.exe
Трансформация разметки в сборку .NET
Роль BAML
Отображение XAML-разметки приложения на код C#
Синтаксис XAML для WPF
Пространства имен XAML XML и “ключевые слова” XAML
Элементы XAML, атрибуты XAML и преобразователи типов
Понятие присоединяемых свойств XAML
Понятие расширений разметки XAML
Построение приложений WPF с использованием файлов отделенного кода
Добавление файла кода для класса MyApp
Построение приложений WPF с использованием Visual Studio
Панель инструментов и визуальный конструктор/редактор XAML
Обработка событий с использованием окна Properties
Обработка событий в редакторе XAML
Построение специального редактора XAML с помощью Visual Studio
Реализация события Loaded
Реализация события Сliсk объекта Buttоn
Тестированиеприложения
Изучение документации WPF
Резюме
Глава 28. Программирование с использованием элементов управления WPF
Подробные сведения находятся в документации
Краткий обзор визуального конструктора WPF в Visual Studio
Работа с редактором Document Outline
Управление компоновкой содержимого с использованием панелей
Позиционирование содержимого внутри панелей WrарPаnel
Позиционирование содержимого внутри панелей StackPanel
Позиционирование содержимого внутри панелей Grid
Позиционирование содержимого внутри панелей DockPanel
Конфигурирование панелей с использованием визуальных конструкторов VisuadStudio
Построение окна с использованием вложенных панелей
Построениепанелиинструментов
Завершение проектирования пользовательского интерфейса
Реализация логики проверки правописания
Понятие команд WPF
Подключение команд к свойству Command
Подключение команд к произвольным действиям
Работа с командами Open и Save
Более глубокий взгляд на API-интерфейсы и элементы управления WPF
Построение вкладки Ink API
Обработка событий для вкладки InkАРI
Элeмeнт yпpaвлeния InkCanvas
Элемент управления ComboBox
Сохранение, загрузка и очистка данных InkCanvas
Диспетчеры компоновки документа
Построение вкладки Documents
Включение аннотаций и “клейких” заметок
Сохранение и загрузка потокового документа
Введение в модель привязки данных WPF
Установка привязки данных с использованием Visual Studio
Свойство DataContext
Преобразование данных с использованием IValueConverter
Установка привязок данных в коде
Построение вкладки DataGrid
Резюме
Глава 29. Службы визуализации графики WPF
Визуализация графических данных с использованием фигур
Удаление прямоугольников, эллипсов и линий с поверхности Canvas
Работа с элементами Polyline и Polygon
Работа с элементом Path
Кисти и перья WPF
Конфигурирование кистей в коде
Конфигурированйеперьев
Применение графических трансформаций
Трансформация данных Canvas
Работа с редактором трансформаций Visual Studio
Применение трансформаций на этапе проектирования
Трансформация холста в коде
Визуализация графических данных с использованием рисунков и геометрий
Рисование с помощью DrawingBrush
Включение типов Drawing в DrawingImage
Роль инструмента Expression Design
Импорт графических данных в проект WPF
Взаимодействие с объектами изображения
Визуализация графических данных с использованием визуального уровня
Первый взгляднакласс DrawingVisual
Визуализация графических данных в специальном диспетчере компоновки
Реагирование на операции проверки попадания
Резюме
Глава 30. Ресурсы, анимация и стили WPF
Программная загрузка изображения
Определение ресурсов уровня окна
Расширение разметки {DynamicResource}
Ресурсы уровня приложения
Определение объединенных словарей ресурсов
Определение сборки, включающей только ресурсы
Службы анимации WPF
Свойства To, From и By
Реализация анимации в коде C#
Управление темпом анимации
Запуск в обратном порядке и циклическое выполнение анимации
Реализация анимации в разметке XAML
Роль триггеров событий
Анимация с использованием дискретных ключевых кадров
Роль стилей WPF
Автоматическое применение стиля с помощью TargetType
Роль неименованных стилей
Определение стилей с триггерами
Анимированные стили
Применениестилейвкоде
Резюме
Глава 31. Свойства зависимости, маршрутизируемые события и шаблоны
Построение специального свойства зависимости
Реагирование на изменение свойства
Маршрутизируемые события
Продолжение или прекращение пузырькового распространения
Роль маршрутизируемых туннельных событий
Логические деревья, визуальные деревья и стандартные шаблоны
Программный просмотр визуального дерева
Программный просмотр стандартного шаблона элемента управления
Построение специального шаблона элемента управления с помощью инфраструктуры триггеров
Встраивание визуальных подсказок с использованием триггеров
Роль расширения разметки {TemplateBinding}
Роль класса ContentPresenter
Включение шаблонов в стили
Резюме
Часть VIII. ASP.NET Web Forms
Веб-приложенияивеб-серверы
Роль языка HTML
Инструменты визуального конструктора HTML в Visual Studio
Построение HTML-формы
Роль сценариев клиентской стороны
Обратная отправка веб-серверу
Обзор API-интерфейса ASP.NET
Построение однофайловой веб-страницы ASP. NET
Проектирование пользовательского интерфейса
Добавление логики доступа к данным
Роль директив ASP.NET
Aнaлиз блoкa script
Анализ объявлений элементов управления ASP. NET
Построение веб-страницы ASP NET с использованием файлов кода
Изменение файла кода
Отладка и трассировка страниц ASP.NET
Сравнение веб-сайтов и веб-приложений ASP.NET
Структура каталогов веб-сайта ASP.NET
Цепочка наследования для типа Page
Взаимодействие с входящим HTTP-запросом
Свойство IsPostBack
Взаимодействие с исходящим НТТР-ответом
Перенаправление пользователей
Жизненный цикл веб-страницы ASP.NET
Событие Errоr
Poльфaйлaweb.config
Резюме
Глава 33. Веб-элементы управления, мастер-страницы и темы ASP.NET
Свойство AutoPostBack
Базовые классы Control и WebControl
Динамическое добавление и удаление элементов управления
Взаимодействие с динамически созданными элементами управления
Основные категории веб-элементов управления ASP.NET
Построение примера веб-сайта ASP. NET
Определение стандартной страницы содержимого Default.aspx
Проектирование страницы содержимого Inventory.aspx
Проектирование страницы содержимого BuildCar.aspx
Роль элементов управления проверкой достоверности
Элемент управления RequiredFieldValidator
Элемент управления CompareValidator
Создание итоговой панели проверки достоверности
Определение групп проверки достоверности
Работа с темами
Свойство SkinID
Программное назначение тем
Резюме
Проблема поддержки состояния
Приемы управления состоянием ASP.NET
Роль состояния представления ASP.NET
Рольфайла Global.asax
Различие между состоянием приложения и состоянием сеанса
Модификация данных приложения
Работа с кешем приложения
Модификация файла *.aspx
Поддержка данных сеанса
Cookie-наборы
Чтение входящих cookie-данных
Poль элeмeнтa <sessionState>
Хранение информации о сеансах в выделенной базе данных
Введение в API-интерфейс ASP. NET Profile
Определение пользовательского профиля в web.config
Программный доступ к данным профиля
Группирование данных профиля и сохранение специальных объектов
Резюме
Предметный указатель