Windows Presentation Foundation



Podobne dokumenty
MVVM i XAML w Visual Studio 2015 / Jacek Matulewski. Gliwice, cop Spis treści

Programowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego

1. Wprowadzenie do WPF i XAML. Tworzenie interfejsu użytkownika.

Instrukcja laboratoryjna cz.3

Budowa aplikacji w technologii.net wykład 05 Polecenia i zasoby

Rys. 3. Kod elementów na stronie po dodaniu kontrolek podstawowych.

Zdarzenia i polecenia

Programowanie obiektowe

WPF 4.5 : księga eksperta / Adam Nathan. Gliwice, cop Spis treści

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Prosta książka telefoniczna z wykorzystaniem zapisu do pliku

Instrukcja laboratoryjna cz.3

Instrukcja laboratoryjna nr.4

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Laboratorium programowania urządzeń mobilnych

Lokalizacja Oprogramowania

using System;... using System.Threading;

Windows Presentation Foundation

1. Przypisy, indeks i spisy.

Zaawansowane aplikacje internetowe - laboratorium

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

Zacznij Tu! Poznaj Microsoft Visual Basic. Michael Halvorson. Przekład: Joanna Zatorska

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Dodanie nowej formy do projektu polega na:

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

Leszek Stasiak Zastosowanie technologii LINQ w

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Projektowanie przy uz yciu motywo w częś c 1: informacje podśtawowe

16) Wprowadzenie do raportowania Rave

Dodawanie grafiki i obiektów

Microsoft PowerPoint 2003 efektywne tworzenie i prezentacji multimedialnych

Aby nadać jej pożądaną postać należy w pliku Window1.xaml stworzyć definicję swojego stylu modyfikując ręcznie postać zapisu XAML:

Wprowadzenie do programowania aplikacji mobilnych

Tworzenie prezentacji w MS PowerPoint

Laboratorium 1 - Programowanie proceduralne i obiektowe

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Multimedia JAVA. Historia

XAML Extensible Application Markup Language

Programowanie Obiektowe GUI

Informatyka II. Laboratorium Aplikacja okienkowa

1.3. Tworzenie obiektów 3D. Rysunek 1.2. Dostępne opcje podręcznego menu dla zaznaczonego obiektu

Ćwiczenie 8. Kontrolki serwerowe

Spis treści. 1 Moduł Mapy 2

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej.

Praca z widokami i nawigacja w pokazie

1. Narzędzia główne: WORD 2010 INTERFEJS UŻYTKOWNIKA. wycinamy tekst, grafikę

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Ćwiczenie Nr 6 Przegląd pozostałych najważniejszych mechanizmów systemu operacyjnego Windows

Budowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych

Wprowadzenie do projektu QualitySpy

Budowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Ustalanie dostępu do plików - Windows XP Home/Professional

Formatowanie tekstu przy uz yciu stylo w

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 2

KONFIGURACJA PRZEGLĄDAREK. Poniższa konfiguracja dedykowana jest dla Bankowości Internetowej SGB

ROZSZERZANIE MOŻLIWOŚCI...

To sposób w jaki użytkownik wchodzi w interakcje z systemem. Środowisko graficzne używa kombinacji graficznych elementów(przyciski, okna, menu) i

Rozwój aplikacji modułowych Paweł Brudnicki. Dodanie modułu

Aplikacje WWW. Laboratorium z przedmiotu Aplikacje WWW - zestaw 01

CSS. Kaskadowe Arkusze Stylów

Modele zawartości. WPF wykorzystuje 4 modele zawartości kontrolek: ContentControl pojedyncza zawartość

Programowanie telefonów z Windows Phone 7, cz. 2

Infrastruktura aplikacji WWW

Podręczna pomoc Microsoft Power Point 2007

[Android] Podstawy programowania

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

WYMAGANIA EDUKACYJNE. Witryny i Aplikacje Internetowe klasa I

Visual Basic w programie Excel

Programowanie w technologii.net wykład 4 Aplikacja i okna

Edytor tekstu OpenOffice Writer Podstawy

Pierwsza strona internetowa

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

REFERAT O PRACY DYPLOMOWEJ

I - Microsoft Visual Studio C++

Miejski System Zarządzania - Katowicka Infrastruktura Informacji Przestrzennej

Krzyżówka Hot Potatoes JCross

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Visual Basic for Applications. Formatki tworzenie,

Podstawy tworzenia prezentacji w programie Microsoft PowerPoint 2007

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Nr: 15. Tytuł: Kancelaris w systemie Windows 8 i Windows 8.1. Data modyfikacji:

Programowanie w Javie

Podstawy Programowania 2

Budowa aplikacji ASP.NET współpracującej z bazą danych do obsługi przesyłania wiadomości

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

Tomasz Grześ. Systemy zarządzania treścią, cz. II

Delphi podstawy programowania. Środowisko Delphi

Rozdział 4. Multimedia

Java Server Faces narzędzie do implementacji w wy prezentacji

ZMIANY W PROGRAMIE ETO

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript


Transkrypt:

20 listopada 2006

1 Wprowadzenie Architektura 2 Wprowadzenie do XAML a Model zdarzeń 3 Style Szablony Dokumenty

Wprowadzenie Architektura jest nową biblioteką Microsoftu do budowania interfejsów użytkownika. Jest przeznaczona na platformę.net 3.0 i jest wbudowana w system Windows Vista. Jest także dostępna dla Windowsa XP. Najważniejsze własności: Deklaratywne budowanie interfejsów przy pomocy języka XAML (Zammel). Dwa modele aplikacji: wolnostojąca i uruchamiana w przeglądarce. Wykorzystanie sprzętowej akceleracji grafiki. Wsparcie dla dwóch rodzajów dokumentów: Fixed i Flow. Konfigurowalność i rozszerzalność.

Możliwości Wprowadzenie Architektura Themes wsparcie dla skórek. Styles zmiana wyglądu kontrolek. Control Templates zmiana wewnętrznej struktury kontrolek. Data Templates szablony wizualizacji danych. Data Binding powiązania kontrolek z danymi. Events złożony system propagacji zdarzeń. Commanding powiązania zdarzeniekomendaakcja. Properties zaawansowany system właściwości (z dziedziczeniem wartości itp.).

Dwa modele aplikacji Wprowadzenie Architektura W WPF występują dwa modele aplikacji: zwykła aplikacja okienkowa, XAML Browser Application - XBAP (exe-bap). Aplikacja XBAP składa się ze stron napisanych w XAML u, które są wyświetlane w oknie przeglądarki. Aplikacja XBAP jest: zintegrowana z przeglądarką, wspiera nawigowanie przy pomocy przycisków Back/Forward, jest uruchamiana z ograniczonymi uprawnieniami.

Architektura WPF Wprowadzenie Architektura Wszstkie funkcje graficzne WPF są wykonywane przy pomocy bibliotek DirectX. Kod za to odpowiedzialny, milcore, to jedyna część WPF uruchamiana poza maszyną.net. milcore odpowiada też za niskopoziomowe zarządanie pamięcią i inne krytyczne dla prędkości wykonania elementy.

Drzewa obiektów w WPF Wprowadzenie Architektura Kontrolki w WPF trzymane są w dwóch drzewach: logicznym, i wizualnym. Drzewa te nie są izomorficzne. Drzewo logiczne jest używane np. przy propagacji zdarzeń. Drzewo wizualne jest używane do renderowania kontrolek. Każda kontrolka tworzy pewną liczbę węzłów wizualnych.

Wprowadzenie do XAML a Model zdarzeń Extensible Application Markup Language W WPF cały wygląd interfejsu użytkownika może być zapisany deklaratywnie. Pozwala to oddzielić warstwę prezentacji od zachowania. Do opisu wyglądu aplikacji używany jest oparty na XML u język XAML. Elementy w plikach XAML tłumaczą się bezpośrednio na instancjacje obiektów. Zwykle korzeniem pliku XAML jest element <Window>, <Page> lub <Application>.

Wprowadzenie do XAML a Model zdarzeń Mapowanie XAML a na drzewo obiektów Mapowanie XAML a: element obiekt, atrybut właściwości i komunikaty, przestrzeń nazw XML przestrzeń nazw CLR, XAML <StackPanel> <Button Content="Click Me"/> </StackPanel> C# StackPanel stackpanel = new StackPanel(); Button button = new Button(); button.content = "Click Me"; stackpanel.children.add(button);

Ustawianie właściwości w XAML u Wprowadzenie do XAML a Model zdarzeń Składnia atrybutowa <Button Background="Blue" Content="This is a button"/> Składnia elementowa <Button> <Button.Background> <SolidColorBrush Color="Blue"/> </Button.Background> <Button.Content> This is a button </Button.Content> </Button> Jedyna równica polega na tym, że elementy bezpośrednio tworzą obiekty, a atrybuty rzutują swoją zawartość ze stringa na odpowiedni typ.

Wyrażenia wewnątrz atrybutów Wprowadzenie do XAML a Model zdarzeń Przy pomocy rzutowania ze stringa nie da się zrobić odwołania do istniejącego obiektu. Z pomocą przychodzą wyrażenia, które są zapisywane w nawiasach klamrowych: {, }. Przykład: <Page.Resources> <Style TargetType="Border" x:key="pagebackground"> <Setter Property="Background" Value="Blue"/> </Style> </Page.Resources> <StackPanel> <Border Style="{StaticResource PageBackground}" /> </StackPanel>

Łączenie XAML a z kodem Wprowadzenie do XAML a Model zdarzeń Aby powiązać element XAML a z konkretną klasą należy w korzeniu dokumentu opisującego stronę, okno lub aplikację dodać atrybut x:class: XAML code-behind: <Page xmlns="http://.../xaml/presentation" xmlns:x="http://.../xaml" x:class="mynamespace.mypagecode"> <Button Click="ClickHandler" >Click Me!</Button> </Page> namespace MyNamespace { public partial class MyPageCode { void ClickHandler(object sender, RoutedEventArgs e) { ((Button)e.Source).Background = Brushes.Red; } } }

Zdarzenia w WPF Wprowadzenie do XAML a Model zdarzeń Zdarzenia w WPF mogą pochodzić z klawiatury, myszy, od kontrolek itp. Zdarzenia mają trzy własności: source - obiekt który wywołał zdarzenie, target - obiekt do którego wysłano zdarzenie, eventargs - parametry zdarzenia. Zdarzenia mogą być propagowane na trzy sposoby: direct - bezpośredno do odbiorcy, tunneling - zdarzenie idzie od korzenia drzewa do odbiorcy, bubbling - zdarzenie idzie od odbiorcy w kierunku korzenia.

Propagacja zdarzeń Wprowadzenie do XAML a Model zdarzeń Zdarzenia propagowane są po drzewie logicznym, aż znajdą obiekt, który je obsłuży. Propagacja zdarzenia jest przerywana, poprzez ustawienie mu flagi Handled.

Propagacja zdarzeń Wprowadzenie do XAML a Model zdarzeń Większość zdarzeń jest faktycznie złożona z dwóch zdarzeń, kolejno propagowanych po drzewie logicznym. Przykładowo, po naciśnięciu klawisza wywoływane są kolejno zdarzenia: PreviewKeyDown i KeyDown. Zdarzenia Preview... są wywoływane najpierw, metodą tunnel. Zdarzenia właściwe są propagowane później metodą bubble. Takie rozwiązanie jest bardzo elastyczne. Pozwala: filtrować zdarzenia schodzące do kontrolek-dzieci, obsługiwać zdarzenia dzieci przez ojców.

Wprowadzenie do XAML a Model zdarzeń Przykład: zdarzenie obsługiwane przez ojca <StackPanel Button.Click="CommonClickHandler"> <Button Name="YesButton">Yes</Button> <Button Name="NoButton">No</Button> </StackPanel> private void CommonClickHandler(object sender, RoutedEventArgs e) { FrameworkElement fesource = e.source as FrameworkElement; switch (fesource.name) { case "YesButton": // do something here... break; case "NoButton": // do something... break; } e.handled = true; }

Polecenia Wprowadzenie do XAML a Model zdarzeń Polecenia (Commands) dodają poziom abstrakcji pomiędzy zdarzeniami a akcjami. Polecenia opisują pewną akcję, którą należy wykonać, np.: Copy, Paste, Open... Komenda może zostać zaaktywowana przez kontrolkę (np. MenuItem) lub programowo. Zaaktywowana komenda uruchamia zdarzenia PreviewExecuted i Executed, które normalnie są propagowane (domyślnie do kontrolki w ognisku). Inne kontrolki mogą odebrać te zdarzenia i wykonać akcję.

Wprowadzenie do XAML a Model zdarzeń Przykład: Paste z klawiatury <Window.InputBindings> <KeyBinding Key="P" Modifiers="Control" Command="ApplicationCommands.Paste" /> </Window.InputBindings> <Window.CommandBindings> <CommandBinding Command="ApplicationCommands.Paste" Executed="OnPaste" CanExecute="IfCanPaste"/> </Window.CommandBindings> Standardowe polecenia: ApplicationCommands, NavigationCommands, MediaCommands, EditingCommands i ComponentCommands. Te klasy definiują komendy takie jak: Cut, BrowseBack, BrowseForward, Play, Stop...

Wprowadzenie do XAML a Model zdarzeń Przykład: Paste z menu <StackPanel> <Menu> <MenuItem Command="ApplicationCommands.Paste" /> </Menu> <TextBox /> </StackPanel> Gdy kontrolka mogąca odebrać dane polecenia(tu TextBox) nie pozwala na to (CanExecute), to do kontrolki wysyłającej polecenie wysyłane jest zdarzenie CanExecuteChanged - pozwala to zaimplementować np. wyszarzanie nieaktywnych elementów menu.

Dispatcher Wprowadzenie do XAML a Model zdarzeń Aplikacje WPF od początku mają co najmniej dwa wątki: wątek interfejsu użytkownika, działający w tle wątek wyświetlający interfejs. Do elementów UI można się odwoływać tylko z ich wątku. Wszystkie zadania dla wątku UI są kolejkowane przez obiekt Dispatcher. Jego zadaniem jest sortować żądania według priorytetu i wywoływać je po kolei. Aby odwołać się do elementów UI z innego wątku należy wpisać się do kolejki. Służą do tego metody Invoke() i BeginInvoke(). Wywoływanie metody w wątku UI okno.dispatcher.begininvoke(dispatcherpriority.normal, new MojDelegat(UaktualnijUI) );

Style Szablony Dokumenty Każdy element XAML a może trzymać kolekcję zasobów. to dowolne dane, umieszczane w kolekcji Resources elementu. Można się do nich odwoływać z wyrażeń w XAML u lub programowo. są uporządkowane hierarchicznie: gdy dany element nie ma jakiegoś zasobu, to szuka u ojca, dziadka, itd. Zasobami mogą być np. dane dla aplikacji, style, szablony zawartości, szablony danych...

Style Style Szablony Dokumenty Jednym z możliwych zasobów są style: Styl zmieniający tło na niebieskie <Page.Resources> <Style x:key="pagebackground"> <Setter Property="Background" Value="Blue"/> </Style> </Page.Resources> <StackPanel> <Border Style="{StaticResource PageBackground}" /> </StackPanel>

Style domyślne Style Szablony Dokumenty Poprzedni przykład definiował styl nazwany (PageBackground). Style mogą też być domyślnie przypisywane elementom danego typu: Styl dla ramek <Page.Resources> <Style TargetType="Border"> <Setter Property="Background" Value="Blue"/> </Style> </Page.Resources> <StackPanel> <Border/> //aplikowany styl domyślny </StackPanel>

Możliwości styli Style Szablony Dokumenty Style mogą ustawiać właściwości i akcje <Setter Property="Background" Value="Blue"/> <EventSetter Event="Click" Handler="OnClick"/> Takie style nie są zbyt elastyczne. Bardziej zaawansowane możliwości dają szablony kontrolek. Szablony kontrolek pozwalają zmienić nie tylko kolory i akcje. Pozwalają zmienić cały wygląd kontrolki, razem z jej sturukturą wewnętrzną.

Szablony kontrolek Style Szablony Dokumenty Zupełnie przerobiony przycisk <ControlTemplate TargetType="Button"> <Grid> <Ellipse Fill="{TemplateBinding Background}"/> <ContentPresenter/> //wkłada "zawartość" kontrolki </Grid> <ControlTemplate.Triggers> <Trigger Property="IsPressed" Value="true"> <Setter TargetName="Border" Property="Background" Value="{ </Trigger> </ControlTemplate.Triggers> </ControlTemplate>... <Button Template="{StaticResource...}" Content="Content" />

Szablony danych Style Szablony Dokumenty Szablony kontrolek dają ogromne możliwości: pozwalają zupełnie zmienić sposób, w jaki kontrolka się wyświetla. Chciałoby się jeszcze zmienić sposób w jaki kontrolka wyświetla dane. Do tego właśnie służą szablony danych. Opisują one jak dane mają zostać przerobione na elementy wizualne. String interpretowany jako rysunek <DataTemplate DataType="{x:Type String}"> <Border Margin="3"> <Image Source="{Binding}"/> </Border> </DataTemplate> Teraz ListBox stringów zamiast tekstu będzie wyświetlał rysunki w ramce.

Style Szablony Dokumenty Przykład listy z zaaplikowanym szablonem danych

Dowiązania danych Style Szablony Dokumenty Dane wyświetlane w kontrolkach mogą pochodzić z różnych źródeł: literalnie z atrybutu lub elementu Content, z zasobów, z właściwości obiektów.

Przykład dowiązania Style Szablony Dokumenty Kolor przycisku brany z MyData.ColorName <DockPanel.Resources> <c:mydata x:key="mydatasource"/> </DockPanel.Resources> <Button Background="{Binding Source= {StaticResource mydatasource}, Path=ColorName}" Content="Naciśnij" /> Każda kontrolka ma właściwość DataContext. Jest to domyślnie używane dowiązanie danych (gdy Binding nie ma parametru Source).

Style Szablony Dokumenty Lista wypełniana elementami z XmlDataProvidera <Grid.Resources> <XmlDataProvider x:key="xmlsource" XPath="Expenses"> <x:xdata> <Expenses xmlns=""> <Person Name="Mike" e-mail="mikwake.com"/> <Person Name="Mary" e-mail="bellacut.com"/> </Expenses> </x:xdata> </XmlDataProvider> <DataTemplate x:key="datatemp"> <Hyperlink NavigateUri="{Binding XPath=e-mail}" Content="{Binding XPath=Name}" /> </DataTemplate> </Grid.Resources> <ListBox ItemsSource="{Binding Source= {StaticResource xmlsource}, XPath=Person}" ItemTemplate="{StaticResource datatemp}" />

Dokumenty w WPF Style Szablony Dokumenty WPF obsługuje dwa rodzaje dokumentów: FixedDocument, i FlowDocument. WPF, a więc i te dokumenty, obsługują czcionki OpenType. Mają one m. in.: ligatury, alternatywne wersje liter.

Fixed Document Style Szablony Dokumenty FixedDocument jest dokumentem o ustalonym formatowaniu (jak np. PDF). Formatem dla tych dokumentów jest XPSDocument (XAML Page Specification). Jest to pakiet zawierający opis dokumentu w XAML u i inne zasoby (np. rysunki), a całość spakowana jest ZIP em. Pliki w tym formacie można oglądać przy pomocy kontrolki DocumentViewer. Kontrolka ta umożliwa dodawanie do dokumentu adnotacji i wyróżnień. Ponadto systemie Windows Vista pliki do druku wysyłane są właśnie w formacie XPS.

Style Szablony Dokumenty

Flow Document Style Szablony Dokumenty FlowDocument jest dokumentem o formatowaniu dostosowującym się do bieżących możliwości wyświetlania. Jest to format podobny do HTML a. Pliki w tym formacie można oglądać przy pomocy kontrolki FlowDocumentReader. Kontrolka ta posiada zaawansowane opcje składania tekstu: dzielenia na szpalty, łamania wyrazów, wstawiania obiektów inline i pływających,...

Style Szablony Dokumenty

WPF Tools for Orcas Microsoft udostępnił Community Technology Preview (CTP) narzędzi do towrzenia aplikacji na platformę.net 3.0 dla Visual Studio. Niestety są one bardzo niedorobione i z błędami: pojawiają się bzdurne błędy przy budowaniu, podobnie przy debuggowaniu, debuggowanie XAML i praktycznie nie istnieje, Cider - narzędzie do budowania UI: obsługuje niewiele opcji, nie obsługuje zdarzeń, ma chaotyczny interfejs, często nie jest w stanie poradzić sobie z prostymi XAML ami, jest wolny. Dokumentacja jest niedopracowana (mnóstwo drobnych błędów).

Co jeszcze WPF oferuje? Walidację danych w kontrolkach. Animację właściwości obiektów. Lokalizacje. Grafikę 3D. Rozszerzanie składni XAML a. Zaawansowaną nawigację między stronami XAML a (PageFunctions...).