Windows Presentation Foundation (WPF)
description
Transcript of Windows Presentation Foundation (WPF)
![Page 1: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/1.jpg)
Windows Presentation Foundation (WPF)
![Page 2: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/2.jpg)
J.Zs.Cs.: Vizuális programozás (c) 2017
WPF 2D és 3D grafika Dokumentumok Média Teljesen vektorgrafika orientált
könnyen nagyítható (pl. felhasználói felület)
DirectX szükséges Lebegőpontos koordináták, logikai
pixel
2
![Page 3: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/3.jpg)
Felület létrehozása, komponensek használata
J.Zs.Cs.: Vizuális programozás (c) 2017
3
![Page 4: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/4.jpg)
Felület létrehozása
C# kódból
XAML – Visual Studio, Expression Blend, Jegyzettömb
J.Zs.Cs.: Vizuális programozás (c) 2017
5
![Page 5: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/5.jpg)
J.Zs.Cs.: Vizuális programozás (c) 2017
Felület C# kódból6
![Page 6: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/6.jpg)
J.Zs.Cs.: Vizuális programozás (c) 2017
Felület XAML kódból
eXtensible Application Markup Language Cél: design és kód különválasztása Profi alkalmazásoknál külön tervező Deklaratív alkalmazásfejlesztési modell
7
![Page 7: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/7.jpg)
XAML Gyökérelemek
Window Page Application
Elem Egy osztály
Attribútum Egy tulajdonság a komponens
osztályában
J.Zs.Cs.: Vizuális programozás (c) 2017
8
![Page 8: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/8.jpg)
BAML
Binary Application Markup Language Az XAML-ben leírt felület bináris
változata Fordításkor keletkezik az XAML-ből EXE-be beágyazva ~\obj\Debug\*.BAML Betöltés az InitializeComponent-
benJ.Zs.Cs.: Vizuális programozás (c) 2017
9
![Page 9: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/9.jpg)
C# - ban
Hivatkozás a nyomógombra a kódban XAML-ben Name="btPróba"
attribútum Az eseménykezelőben
btPróba.Background = Brushes.Red; btPróba.Content = "Felirat";
J.Zs.Cs.: Vizuális programozás (c) 2017
10
![Page 10: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/10.jpg)
Document Outline Tervezési nézetben a
felületet leíró dokumentumhierarchiát megtekinthetjük a Document Outline ablakban
Fa hierarchiák WPF-ben Logikai fa Vizuális fa
J.Zs.Cs.: Vizuális programozás (c) 2017
11
![Page 11: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/11.jpg)
Logikai fa Leírja a szülő és a gyerek
objektumok közötti összefüggést Rácsban nyomógomb, amiben
rács, amiben kép és szöveg Fontos a tulajdonságok öröklése
szempontjából Navigálás: GetParent,
GetChildren, FindLogicalNode
J.Zs.Cs.: Vizuális programozás (c) 2017
12
![Page 12: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/12.jpg)
Vizuális fa
Meghatározza, hogy egy objektum hogyan lesz megjelenítve a grafikus alapelemek felhasználásával (vonalak, négyszögek, stb.)
Fontos a transzformációk szempontjából
J.Zs.Cs.: Vizuális programozás (c) 2017
13
![Page 13: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/13.jpg)
Application osztály
System.Windows.ApplicationTulajdonságok: Current – a futó alkalmazás objektum –
pl. alkalmazás szintű változók, leállítás MainWindow – a fő ablak Windows – az alkalmazást létrehozó
szálból létrehozott ablakok gyűjteménye
J.Zs.Cs.: Vizuális programozás (c) 2017
14
![Page 14: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/14.jpg)
Application osztály
StartupUri – az alkalmazás indításakor automatikusan megnyitott ablak/lap
Properties – az alkalmazásból bárhonnan elérhető adatok tárolása
Application.Current.Properties["Név"]=Érték;Események: Startup Exit
J.Zs.Cs.: Vizuális programozás (c) 2017
15
![Page 15: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/15.jpg)
Vezérlők Nem kell új (származtatott) vezérlőt
írni ahhoz, hogy egy vezérlő megjelenését megváltoztassuk (pl. ellipszis alakú nyomógomb)
Sablonokkal (Template) megoldva Csak akkor kell új vezérlőt írni, ha a
viselkedést akarjuk megváltoztatni
J.Zs.Cs.: Vizuális programozás (c) 2017
16
![Page 16: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/16.jpg)
Core user input controls Button, RadioButton, ComboBox, CheckBox, Calendar, DatePicker, Expander, DataGrid, ListBox, ListView, Slider, ToggleButton, TreeView, ContextMenu, ScrollBar, Slider, TabControl, TextBlock, TextBox, RepeatButton, RichTextBox, Label
J.Zs.Cs.: Vizuális programozás (c) 2017
17
![Page 17: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/17.jpg)
Window and controldecoration
Menu, ToolBar, StatusBar, ToolTip, ProgressBar
J.Zs.Cs.: Vizuális programozás (c) 2017
18
![Page 18: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/18.jpg)
Media controls
Image, MediaElement, SoundPlayerAction
J.Zs.Cs.: Vizuális programozás (c) 2017
19
![Page 19: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/19.jpg)
Tárolók (rétegmenedzserek) Grid – sorok és oszlopok alakíthatók ki UniformGrid – minden cella azonos
méretű StackPanel – vízszintesen vagy
függőlegesen elhelyezett elemek DockPanel – dokkolás támogatása Canvas – koordináta alapú tárolás WrapPanel – az elemek egyenes
vonalban helyezkednek el A tárolók egymásba ágyazhatóak
J.Zs.Cs.: Vizuális programozás (c) 2017
20
![Page 20: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/20.jpg)
Grid és DockPanel
J.Zs.Cs.: Vizuális programozás (c) 2017
21
![Page 21: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/21.jpg)
StackPanel Térköz nélkül helyezi el az
elemeket alapból
J.Zs.Cs.: Vizuális programozás (c) 2017
22
![Page 22: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/22.jpg)
Canvas
J.Zs.Cs.: Vizuális programozás (c) 2017
23
![Page 23: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/23.jpg)
Jobbra igazított menüpont a főmenüben
J.Zs.Cs.: Vizuális programozás (c) 2017
25
![Page 24: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/24.jpg)
Menüpontok függőlegesen középre igazítása
<Menu x:Name="mnFőmenü" Height="30"> <Menu.ItemsPanel> <ItemsPanelTemplate> <DockPanel
HorizontalAlignment="Stretch"/> </ItemsPanelTemplate> </Menu.ItemsPanel> <MenuItem Header="Kever" x:Name="miKever" VerticalAlignment="Center" />
J.Zs.Cs.: Vizuális programozás (c) 2017
26
![Page 25: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/25.jpg)
GridSplitter
<Grid x:Name="grRács"><Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/> <ColumnDefinition />
</Grid.ColumnDefinitions> <TextBox Grid.Column="0" MinWidth="100"
Text="TextBox"/><GridSplitter Grid.Column="0" Width="5" /><TextBox Grid.Column="1" TextWrapping="Wrap" Text="TextBox" />
</Grid>
J.Zs.Cs.: Vizuális programozás (c) 2017
27
![Page 26: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/26.jpg)
Eszköztár<ToolBar Height="34" DockPanel.Dock="Top" >
<Button Content="Indít" /><Button ><Image Source="/Ikonok/copy.ico"/></Button><Button><Image Source="/Ikonok/cut.ico"/></Button><Button><Image Source="/Ikonok/delete.ico"/></Button><Button><Image Source="/Ikonok/paste.ico"/></Button>
</ToolBar>
J.Zs.Cs.: Vizuális programozás (c) 2017
Visual Studio Image Library: https://www.microsoft.com/en-us/download/details.aspx?id=35825
28
![Page 27: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/27.jpg)
Ikonok befordítása a szerelvénybe1
Solution Explorerben egy mappa az ikonoknak
Ikonok bemásolása a mappába
Ikonok kijelöléseJ.Zs.Cs.: Vizuális programozás (c) 2017
29
![Page 28: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/28.jpg)
Ikonok befordítása a szerelvénybe2
Properties Build Action=Resource Copy to Output Directory=Do not
copy
Build/Rebuild Solution
J.Zs.Cs.: Vizuális programozás (c) 2017
30
![Page 29: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/29.jpg)
Képek tárolása szerelvényen kívül
Properties Build Action=Content Copy to Output Directory=Copy
always Build/Rebuild Solution
J.Zs.Cs.: Vizuális programozás (c) 2017
31
![Page 30: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/30.jpg)
Többsoros szövegmező
J.Zs.Cs.: Vizuális programozás (c) 2017
32
![Page 31: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/31.jpg)
Események és viselkedés
J.Zs.Cs.: Vizuális programozás (c) 2017
33
![Page 32: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/32.jpg)
Viselkedés
A viselkedést a vezérlő API-ja határozza meg
Parancsok (Commands) – műveletek támogatása: Copy, Cut, Paste, stb.
Viselkedés vagy a kinézet módosítása tulajdonságokkal: font, háttérszín, stb.
Események Funkcionalitást megvalósító metódusok:
Sort, ClearJ.Zs.Cs.: Vizuális programozás (c) 2017
34
![Page 33: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/33.jpg)
Eseménykezelés
Eseményekre fel lehet iratkozni: Design nézetből a Properties ablakban
Alapértelemezett eseményre feliratkozás duplán rákattintva a vezérlőre (pl.: Button-nél a click)
XAML-ből Pl: <Button x:Name="btBack" Content="Vissza" Click="btBack_Click"/>
C# kódbólJ.Zs.Cs.: Vizuális programozás (c) 2017
35
![Page 34: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/34.jpg)
Eseménytípusok Továbbított esemény (Routed Events)
Ha egy vezérlő több elemből épül fel (pl. egy nyomógomb, amin van egy kép és egy szöveg)
Attól függetlenül, hogy a képen, a szövegen vagy a nyomógombon kattintunk ugyanolyan értesítés akarunk kapni
Direkt esemény (Direct Event) – a WinForm-mal azonos módon működik, az eseményt csak az előidéző objektumban dolgozhatjuk fel
J.Zs.Cs.: Vizuális programozás (c) 2017
36
![Page 35: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/35.jpg)
Továbbított esemény
Buborék esemény (Bubbling Event) – először az eseményt kiváltó vezérlő kapja meg, majd az őt tartalmazó rács, majd a nyomógomb, és így tovább felfelé a hierarchiában a gyökér csomópontig.
Lefutó esemény (Tunneling Event) – Preview-al kezdődik a neve, a gyökértől kiindulva halad lefele az esemény előidéző vezérlőhöz. Általában az események blokkolására használják: e.Handled=true;
Először a TE ()majd a BE () következik be
J.Zs.Cs.: Vizuális programozás (c) 2017
37
![Page 36: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/36.jpg)
Commands Egy műveletet több módon is
előidézhetünk: menü, gyorsbillentyű, eszköztár
Kössük őket össze, hogy egyszerűen megoldható legyen a letiltás/engedélyezés → Commands objektumok
Beépített és programozó által definiált parancs osztályok
J.Zs.Cs.: Vizuális programozás (c) 2017
38
![Page 37: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/37.jpg)
Beépített parancs osztályok
ApplicationCommands: pl. vágólap, mentés, megnyitás, új, lezárás, nyomtatás
ComponentCommands: vezérlőktől származó parancsok és információk feldolgozása: pl. ScrollUp
EditingCommands: szövegszerkesztési parancsok: pl. félkövér, dőlt, igazítás
MediaCommands: video és audio lejátszását előíró parancsok: pl. lejátszás, szünet, hangerő, sávválasztás
J.Zs.Cs.: Vizuális programozás (c) 2017
39
![Page 38: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/38.jpg)
CommandBinding A CommandBinding osztály kapcsolja
össze a parancsot és az eseménykezelőt
Eseményei: CanExecute: e.CanExecute=true; Executed
Példa: 05_Szovegszerk
J.Zs.Cs.: Vizuális programozás (c) 2017
40
![Page 39: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/39.jpg)
Vezérlők csatolása
J.Zs.Cs.: Vizuális programozás (c) 2017
41
![Page 40: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/40.jpg)
J.Zs.Cs.: Vizuális programozás (c) 2017
42
![Page 41: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/41.jpg)
Űrlapok, adatbevitel és ellenőrzés
J.Zs.Cs.: Vizuális programozás (c) 2017
43
![Page 42: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/42.jpg)
Párbeszédablakok típusai Megjelenítés módja szerint
Modális ( ShowDialog() ) Nem modális ( Show() )
A megoldás módja szerint Beépített (üzenetablak, common dialog boxes) Saját készítésű (custom dialog box)
Az űrlap egy külön ablakban (párbeszédablak) jelenik meg Az űrlap az alkalmazás főablakában van elhelyezve, de
alapból rejtett
J.Zs.Cs.: Vizuális programozás (c) 2017
44
![Page 43: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/43.jpg)
Beépített párbeszédablakok
Üzenetablak: MessageBox Common Dialog Boxes – Közös
párbeszédablakok (Microsoft.Win32) SaveFileDialog OpenFileDialog PrintDialog
J.Zs.Cs.: Vizuális programozás (c) 2017
45
![Page 44: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/44.jpg)
Egyszerű üzenetablak
MessageBox.Show("Egyszerű üzenetablak");
J.Zs.Cs.: Vizuális programozás (c) 2017
46
![Page 45: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/45.jpg)
Kétgombos üzenetablak
J.Zs.Cs.: Vizuális programozás (c) 2017
47
![Page 46: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/46.jpg)
Háromgombos üzenetablak
J.Zs.Cs.: Vizuális programozás (c) 2017
48
![Page 47: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/47.jpg)
OpenFileDialog
J.Zs.Cs.: Vizuális programozás (c) 2017
49
![Page 48: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/48.jpg)
SaveFileDialog
J.Zs.Cs.: Vizuális programozás (c) 2017
50
![Page 49: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/49.jpg)
PrintDialog
Dokumentumok nyomtatása
PrintDialog pd = new System.Windows.Controls.PrintDialog();pd.PageRangeSelection = PageRangeSelection.AllPages;pd.UserPageRangeEnabled = true;// Megjelenítjük az ablakotNullable<bool> result = pd.ShowDialog();//mire kattintottak if (result == true){ //nyomtatás} J.Zs.Cs.: Vizuális programozás (c) 2017
51
![Page 50: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/50.jpg)
Általános lépések
Párbeszédablak objektum létrehozása Kezdeti megjelenést szabályozó
tulajdonságok beállítása Megjelenítés Ha OK-val zárta be a felhasználó, akkor
módosított tulajdonságok kiolvasása
J.Zs.Cs.: Vizuális programozás (c) 2017
52
![Page 51: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/51.jpg)
Egyéni párbeszédablak (Custom Dialog Box) készítése
Szokásos ablakfelépítés Ne jelenjen meg a tálcán: ShowInTaskbar="False" Jelenjen meg a szülő ablak területén:
WindowStartupLocation="CenterOwner" Melyik vezérlő rendelkezzen kezdetben input fókusszal
(ablak Window tagben beállítva)?FocusManager.FocusedElement= "{Binding ElementName=tbElső}"
OK gomb IsDefault="True" Mégse gomb IsCancel="True" DialogResult tulajdonság true/false
J.Zs.Cs.: Vizuális programozás (c) 2017
53
![Page 52: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/52.jpg)
Űrlap külön ablakban –Jelszóbeviteli párbeszédablak
J.Zs.Cs.: Vizuális programozás (c) 2017
Csatolás
Csatolás
54
![Page 53: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/53.jpg)
Használat
J.Zs.Cs.: Vizuális programozás (c) 2017
55Párbeszédablak
osztálya
Főablak osztálya
Legyen más osztályból is olvasható
Legyen más osztályból is olvasható
![Page 54: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/54.jpg)
Párbeszédablak kezdeti beállítással
Menüpont (főablak XAML)<MenuItem x:Name="miÚj" Header="Új ..." Click="miÚj_Click"/>
Ablak objektum létrehozása és kezdeti beállítások (főablak C#):
var wnd= new wndÚjAdat { Owner= this,
Személy={ Név= "Valaki Eduárd", Átlag= 2}};wndÚjAdat.ShowDialog();
Párbeszédablak megjelenítésewndÚjAdat.ShowDialog();Demo: EgyeniParbeszedAblakJ.Zs.Cs.: Vizuális programozás (c) 2017
56
A pb. ablak osztályában van egy publikus Személy típusú
tulajdonság
![Page 55: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/55.jpg)
Beállítások a párbeszédablak osztályában
J.Zs.Cs.: Vizuális programozás (c) 2017
57
Személy objektum létrehozása az ablak
létrehozásakor
Objektum rácshoz „kötése”
![Page 56: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/56.jpg)
Komplex adatkötés
J.Zs.Cs.: Vizuális programozás (c) 2017
58
![Page 57: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/57.jpg)
Input fókusz és névtérhivatkozás beállítása a megjelenő párbeszédablakban
J.Zs.Cs.: Vizuális programozás (c) 2017
59
![Page 58: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/58.jpg)
Űrlap az alkalmazás főablakában<Window x:Class="Hallgatok.wndFőablak"xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml
xmlns:hallgatok="clr-namespace:Hallgatok„
Title="Hallgatói adatok" Height="350" Width="525">…<hallgatok:ucHallgatóAdatrögzítés x:Name="ucHallgatóAdatrögzítés"
Grid.Row="1" Visibility= " Collapsed" /><hallgatok:ucHallgatoAdatmodositas
x:Name="ucHallgatóAdatmódosítás" Visibility="Collapsed"
Grid.Row="1"/>J.Zs.Cs.: Vizuális programozás (c) 2017
60
![Page 59: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/59.jpg)
Megjelenítés - elrejtésprivate void miHallgatóAdatrögzítés_Click(object sender,
RoutedEventArgs e){ ucHallgatóAdatmódosítás.Visibility =
Visibility.Collapsed;ucHallgatóAdatrögzítés.Visibility = Visibility.Visible;
}private void miHallgatóMódosítás_Click(object sender,
RoutedEventArgs e){ ucHallgatóAdatrögzítés.Visibility = Visibility.Collapsed;
ucHallgatóAdatmódosítás.Visibility = Visibility.Visible;}
J.Zs.Cs.: Vizuális programozás (c) 2017
61
![Page 60: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/60.jpg)
Adatátadás párbeszédablakoknak és UserControl-oknak
Hagyományos megoldások Konstruktornak átadott paraméter Értékadás egy tulajdonságnak (akár inicializáló
listában) Osztály létrehozása "Globális célra" és abban
statikus adattagban WPF újdonság
Az alkalmazáshoz kapcsolódó tulajdonság gyűjtemény:
Application.Current.Properties
J.Zs.Cs.: Vizuális programozás (c) 2017
62
![Page 61: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/61.jpg)
Tulajdonság gyűjtemény
J.Zs.Cs.: Vizuális programozás (c) 2017
63
![Page 62: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/62.jpg)
Adatok megjelenítése amikor a komponens (UserControl) láthatóvá válik
private void UserControl_IsVisibleChanged(object sender,
DependencyPropertyChangedEventArgs e){ if(!this.IsVisible) return;
dsHallgatók=Application.Current.Properties["dsHallgatók"] as dsHallgatók;
if (dsHallgatók.dtSzakok.Rows.Count > 1){ cbARSzak.ItemsSource =
dsHallgatók.dtSzakok;cbARSzak.DisplayMemberPath = "Szaknév";cbARSzak.SelectedIndex = 0;
}}
J.Zs.Cs.: Vizuális programozás (c) 2017
64
![Page 63: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/63.jpg)
Bevitt adatok ellenőrzése (Validation)
Miért? Biztonság Későbbi kivételek elkerülése Idejében jelezni a felhasználó felé Teljesítménynövelés (pl. többrétegű
alkalmazásokban a kliens és az alkalmazási rétegek közötti felesleges többszörös adatáramlás elkerülése)
J.Zs.Cs.: Vizuális programozás (c) 2017
65
![Page 64: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/64.jpg)
Hogyan? Az ablak OK gombbal történő lezárásához
eseménykezelőt készítünk, és ott egyenként ellenőrizzük az egyes mezőkbe beírt adatokat. Hiba esetén hibaüzenet és az ablakot nem zárjuk be ha az ablakot már bezártuk, akkor újból
megjelenítjük azt (új objektum példány) user control esetén a uc-t nem rejtjük el.
Ún. validációs szabályok segítségével.
J.Zs.Cs.: Vizuális programozás (c) 2017
66
![Page 65: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/65.jpg)
Validációs szabály Egy osztály ValidationRule leszármazottja Egy adatkötéshez rendeljük – egy objektum egy tagját kötjük a
vezérlő ellenőrizni kívánt tulajdonságához Minden vezérlőhöz szabály, egy vezérlőhöz akár több szabály is using System.Windows.Controls; Validate metódus átdefiniálása
J.Zs.Cs.: Vizuális programozás (c) 2017
67
Komponens ObjektumAdatkötés
Validációs szabály
Tulajdonság Tulajdonság
![Page 66: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/66.jpg)
Validate metódus
J.Zs.Cs.: Vizuális programozás (c) 2017
68
![Page 67: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/67.jpg)
Validációs szabály vezérlőhöz rendelése – XAML kódban
J.Zs.Cs.: Vizuális programozás (c) 2017
69 A rácshoz egy daforrás objektumot fogunk rendelni
futási időben
Validációs szabályok kiértékelése már gépelés
közben
![Page 68: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/68.jpg)
Hibás adatbevitelnél piros keret a szövegmező körül
J.Zs.Cs.: Vizuális programozás (c) 2017
70
![Page 69: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/69.jpg)
A validációs metódusban megadott hibaüzenet megjelenítése
Gyorstippben (buborék - ToolTip)
Egy erre célra beépített vezérlőben (pl. TextBlock)
J.Zs.Cs.: Vizuális programozás (c) 2017
71
![Page 70: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/70.jpg)
Megvalósítás Definiálunk egy osztályt, ami megvalósítja az
IValueConverter interfészt – cél a hibaüzenetek egyetlen sztringbe foglalása
Statikus erőforrásként felvesszük a párbeszédablak XAML leírásába
A szövegmező ToolTip tulajdonságának vagy a kiegészítő vezérlő Text tulajdonságának értékét adatkötéssel a szövegmező hibagyűjteményéből vesszük
Az átalakító osztály gondoskodik a sztringgé alakításról
J.Zs.Cs.: Vizuális programozás (c) 2017
72
![Page 71: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/71.jpg)
Átalakító osztály
using System.Windows.Controls; using System.Windows.Data;
J.Zs.Cs.: Vizuális programozás (c) 2017
73
![Page 72: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/72.jpg)
Statikus erőforrás
<Window.Resources><local:HibaÁtalakító
x:Key="Átalakító" /></Window.Resources>
J.Zs.Cs.: Vizuális programozás (c) 2017
74
![Page 73: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/73.jpg)
Hibaüzenet gyorstippben
J.Zs.Cs.: Vizuális programozás (c) 2017
75
![Page 74: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/74.jpg)
Hibaüzenet TextBlock-ban
J.Zs.Cs.: Vizuális programozás (c) 2017
76
![Page 75: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/75.jpg)
Az OK gomb kezelése
J.Zs.Cs.: Vizuális programozás (c) 2017
77
![Page 76: Windows Presentation Foundation (WPF)](https://reader038.fdocument.pub/reader038/viewer/2022102810/568168ad550346895ddf5c70/html5/thumbnails/76.jpg)
Egy csomópont alatti összes csomópont hibaállapotának ellenőrzése
J.Zs.Cs.: Vizuális programozás (c) 2017
78