Добро пожаловать на мой блог

The world is yours

WPF

автор: admin | Сентябрь 14, 2010 | Раздел: Программирование

1.Архитетура WPF.
2.XAML.
3.Основы XAML.
Можно почитать : Петцольд, Троэлсон, Андерсон,Мак-Дональд.
WPF- windows presentation foundation.

Варианты приложений WPF:
1. Настольные приложения – сборка запускается на локальной машине (текстовый редактор, плэйер и тд и тп).
2. WPF приложения на основе навигации-это приложения под WIndows у которых интерфейс похож на веб-браузер.
3. Приложения XBAP – приложения которые возможно размещать внутри веб-браузера.
4. SilverLight – это подключаемый модуль к браузерами.
Архитетура WPF:

На рис. присутствуют следующие ключевые компоненты:

1. PresentationFramework.dll содержит типы WPF верхнего уровня, включая те, что представляют окна, панели и прочие виды элементов управления. Также он реализует высокоуровневые программные абстракции, такие как стили. Большинство классов, которые вы будете использовать, находятся непосредственно в этой сборке.

2. PresentationCore.dll содержит базовые типы, такие кале UIElement и Visual, от которых унаследованы все фигуры и элементы управления. Если вам не нужен полный слой абстракции окон и элементов управления, вы можете спуститься ниже, на этот уровень, и продолжать пользоваться преимуществами механизма визуализации WPF

3. WindowsBase.dll содержит еще более базовые ингредиенты, которые потенциально могут использоваться вне WPF, такие как DispatcherObject и DependencyObject. поддерживающие механизм свойств зависимости

4. milcore.dll — ядро системы визуализации WPF и фундамент уровня медиа-интеграции (Media Integration Layer — MIL). Его составной механизм транслирует визуальные элементы в треугольники и текстуры, которых ожидает Direct3D. Хотя milcore.dll считается частью WPF, это также важнейший компонент Windows Vista.

5. WindowsCodecs .dll — низкоуровневый API, обеспечивающий поддержку изображений (например, обработку, отображение и масштабирование битовых карт и JPEG).

6. Direct3D — низкоуровневый API, через который визуализируется вся графика в WPF.

7. User32 используется для определения того, какое место на экране к какой программе относится. В результате он по-прежнему вовлечен в WPF, но не участвует в визуализации распространенных элементов управления.
Основные пространства имен WPF

System. Windows
Это корневое пространство имен WPF. Здесь вы найдете основные типы (такие как Application и Window), которые необходимы любому настольному проекту WPF.
System.Windows .Controls
Здесь вы найдете все ожидаемые виджеты WPF, включая типы для построения систем меню, всплывающих подсказок и многочисленные диспетчеры компоновки.
System.Windows .Markup
Это пространство имен определяет множество типов, обеспечивающих программный разбор разметки XAML (вместе с эквивалентным двоичным форматом BAML).
System.Windows.Media
Это корневое пространство имен для нескольких связанных с мультимедиа пространств имен. Внутри этих пространств имен вы найдете типы для работы с анимацией, визуализацией трехмерной графики, визуализацией текста и прочие мультимедийные примитивы.
System.Windows.Navigation
Это пространство имен предоставляет типы для обеспечения логики навигации, используемой браузерными приложениями XAML (XBAP), а также настольными приложениями на основе страничной навигационной модели.
System. Windows.Shapes
Это пространство имен определяет различные типы двухмерной графики (Rectangle, Polygon и т.п.), используемой разными аспектами каркаса WPF.

Введение XAML – extensible application markup language – расширяемый язык разметки приложений.

Варианты XAML:
1.WPF XAML – включает элементы, которые описывают векторную графику и элементы управления.
2.XPS HAML – используется для форматирования электронных документов.
3.SilverLight XAML – для SilverLight приложений(Браузеров)
4.WF HAML – workflow
Построение WPF:



Утилита командной строки:
Msbuild.exe
Основные правила XAML:
Каждый элемент в документе XAML отображаются на экземпляр класса .NET

XAML – допускает вложение элементов.
Возможно устанавливать свойство и подписываться на события через атрибуты эелементов
На верхним и втором уровне может быть только один элемент
























//////////////////////////////////////////

string str;
public MainWindow()
{
InitializeComponent();
}

private void btnClickMe_Click(object sender, RoutedEventArgs e)
{
str += “nButton”;
Label.Content = str;
e.Handled = false;
}

private void outerEllipse_MouseDown(object sender, MouseButtonEventArgs e)
{
str += “nouterEllipse”;
Label.Content = str;
e.Handled = true;// попробуйте изменять
}

private void btnClickMe_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
str += “nPrewButton”;
Label.Content = str;
e.Handled = false;
}

Последовательность действий подготовки к созданию окна нестандартной формы:
1. Для свойства окна нужно установить свойства AllowTransparency – TRUE.
2. Установить свойства windowStyle – NONE
3. Для свойства background установить прозрачный цвет(transparency)
Способы обеспечения эффекта необычной формы:
1. Реализовать фоном графику используя графический файл.
2. Использовать функции WPF для векторного рисования.
3. Использование элемента WPF.
Для перемещения нужно создать режим перемещения окна посредством инициализирования режима перемещения окна путем вызова метода DragMove.

Изменения размера:
1. установить свойство resizeMode.

Классы используемые в страничном интерфейсе:
1. Page.
2. NavigationWindow
3. Frame
Построение программ с помощью Page и navigationWindow

NavigationWindow nw = (NavigationWindow)Window.GetWindow(this);
first page
—————————————————-

Команда – это “Особенные события”, которые независят от какого либо элемента управления и могут применятся к большому количеству различных элементов управления.
Компоненты комманды:
1.Комманда состоит из объектов представляющего собой задачу.
2.Привязка данных
3. Источник комманд.
4. Целевой объект это элемент для которого выполняется комманда.

public interface ICommand
{
// Возникает, когда происходит изменение режима,
// должна или нет выполняться данная команда.
event EventHandler CanExecuteChanged;
// Задает метод, определяющий, может ли
// команда выполняться в ее данном состоянии.
bool CanExecute(object parameter);
// Определяет метод, вызываемый для выполнения команды.
void Execute(object parameter);
}
Интерфейс: ICommand;
Класс: RoutedCommand;
Класс: RoutedUICommand; (Text)

1. ApplicationCommands. Этот класс предоставляет общие команды, включая команды, связанные с буфером обмена (такие как Сору (Копировать), Cut (Вырезать) и Paste (Вставить)), и команды, касающиеся обработки документов (вроде New (Создать), Open (Открыть), Save (Сохранить), SaveAs (Сохранить как), Print (Печать) и т.д.).
2. NavigationCommands. Этот класс предоставляет команды, используемые для навигации, включая те, что предназначены для страничных приложений (наподобие команды BrowseBack (Назад), BrowseForward (Вперед) и NextPage (Переход)), и те, что подходят для приложений, предназначенных для работы с документами (вроде команды IncreaseZoom (Масштаб) и Refresh (Обновить)).
3. EditingCommands. Этот класс предоставляет длинный перечень команд, предназначенных по большей части для редактирования документов, включая команды для перемещения (MoveToLineEnd (Переход в конец строки), MoveLeftByWord (Переход влево на одно слово), MoveUpByPage (Переход на одну страницу вверх) и т.д.), выделения содержимого (SelectToLineEnd (Выделение до конца строки), Select Left By Word (Выделение слова слева)) и изменения форматирования (ToggleBold (Выделение полужирным) и ToggleUnderline (Выделение подчеркиванием)).
4. MediaCommands. Этот класс включает набор команд для работы с мультимедиа (среди которых команда Play (Воспроизвести), Pause (Пауза), NextTrack (Переход к следующей композиции) и IncreaseVolume (Увеличение громкости)).
5. ComponentsCommands. MoveDown, MoveFocusBack, MoveLeft, MoveRight, ScrollToEnd, ScrollToHome



private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show(“I am Is Opened”);
}

private void CommandBinding_Executed_1(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show(“I am Is Saved”);
}

private void CommandBinding_Executed_2(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show(“I am Is Closed”);
Application.Current.Shutdown();
}

RoutedUICommand

1.Двоичные.
2.Объектные.
Самый низкий уровенЪ:

using System.Windows.Resources;
using System.Reflection;
using System.Resources;
using System.Globalization;
using System.IO;

Assembly assembly = Assembly.GetAssembly(this.GetType());
string resourceName = assembly.GetName().Name + “.g”;
ResourceManager rm = new ResourceManager(resourceName, assembly);
ResourceSet set = rm.GetResourceSet(CultureInfo.CurrentCulture, true, true);

UnmanagedMemoryStream s;
// Второй параметр (true) выполняет поиск ресурса с учетом регистра.
s = (UnmanagedMemoryStream)set.GetObject(“Pic/fon.png”, true);

BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.StreamSource = s;
bi.EndInit();
this.Background = new ImageBrush(bi);

С помощью класса:

StreamResourceInfo sri = Application.GetResourceStream(
new Uri(“Pic/fon.png”, UriKind.Relative));

BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.StreamSource = sri.Stream;
bi.EndInit();
this.Background = new ImageBrush(bi);
1)
Image i = new Image();
i.Source = new BitmapImage(new Uri(@”D:ШагWPFЗанятие 8fon.png”));
gr.Children.Add(i);

Но в случае применения относительного URI можно извлечь из сборки другой ресурс и передать его изображению безо всякого объекта UnmanagedMemoryStream:

2)
Image i = new Image();
i.Source = new BitmapImage(new Uri(“Pic/fon.png”, UriKind.Relative));
gr.Children.Add(i);

3)

У каждого элемента есть свойства в котором можно хранить коллецию типа ResoucesDictionary.
Особенности работы с ресурсами:
1. каждый элемент имеет собственную коллекцию ресурсов




2.Поиск необходимого ресурса WPF производит рекурсивно по дереву элементов.
3. Если применяется статический ресурс, то его определение должно быть всегда перед ссылкой на него
Свойство BuildAction должно быть установлено в значение PAGE.
Нужно объедить файл с коллекцией ресурсов.
Application х:Class=”Resources.Арр”
xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”
xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”
StartupUri=”Menu.xaml” >
Application.Resources>

</Application

Мой блог находят по следующим фразам

36 отзыва(-ов) »

  1. [...] logan.progryz.ru wpf [...]

  2. [...] wpf label прозрачный фон [...]

  3. [...] wpf создание ImageBrush из polygon.background [...]

  4. [...] Для статического поля, метода или свойства "System.Windows…. [...]

  5. [...] перемещение окна wpf [...]

  6. [...] wpf изменение размеров нестандартного окна [...]

  7. [...] Изменение размера WPF формы [...]

  8. [...] polygon wpf [...]

  9. [...] wpf фон формы [...]

  10. [...] java перемещение формы [...]

  11. [...] wpf как сделать перемещение окна [...]

  12. [...] Сохранение объектов в файл – WPF [...]

  13. [...] как открыть картинку из stream в wpf image [...]

  14. [...] wpf подсказки [...]

  15. [...] WindowsBase.dll silverlight 4.0 [...]

  16. [...] WPF RoutedUICommand ToggleBold [...]

  17. [...] Редактор векторной графики на WPF [...]

  18. [...] icommand wpf [...]

  19. [...] wpf открыть страницу во фрейме [...]

  20. [...] silverlight WindowsBase.dll [...]

  21. [...] создание графиков функций WPF [...]

  22. [...] wpf построение графиков [...]

  23. [...] wpf перемещение окна [...]

  24. [...] WPF открыт ьи сохранить картинку [...]

  25. [...] wpf+%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B8 [...]

  26. [...] свойства зависимостей wpf [...]

  27. [...] страничные приложения WPF [...]

  28. [...] wpf формы сохранить в файл [...]

  29. [...] wpf перетаскивание формы [...]

  30. [...] wpf сохранение в текстовый файл [...]

  31. [...] silverlight resourcemanager рекурсия [...]

  32. [...] wpf c# перемещение и изменение размера [...]

  33. [...] wpf сохранение размеров форм [...]

  34. [...] wpf график функции [...]

  35. [...] c# routeduicommand [...]

  36. [...] перемещение нестандартного окна c# wpf [...]

Оставить отзыв