A névterek adják meg a XAML-dokumentumunkban (az adott elemen belül) használható kulcsszavak körét"> A névterek adják meg a XAML-dokumentumunkban (az adott elemen belül) használható kulcsszavak körét">

Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Adatkonverziók Erőforrások

Hasonló előadás


Az előadások a következő témára: "Adatkonverziók Erőforrások"— Előadás másolata:

1 Adatkonverziók Erőforrások
Programozás III. Adatkonverziók Erőforrások

2 XAML névterek <Window x:Class="WpfApplication4.MainWindow” xmlns=" xmlns:x=" Title="MainWindow" Height="350" Width="525"> <Grid> </Grid> </Window> A névterek adják meg a XAML-dokumentumunkban (az adott elemen belül) használható kulcsszavak körét

3 XAML névterek <Window x:Class="WpfApplication4.MainWindow” xmlns=" xmlns:x=" ... WPF-központú .NET névtereket képez le, és a .xaml fájl rendelkezésére bocsátja azokat: System.Windows System.Windows.Controls System.Windows.Data System.Windows.Media System.Windows.Navigation ... stb. Ez az alapértelmezett névtér, az ebből érkező kulcsszavakat nem kell névtérnévvel ellátni: <Window x:Class="WpfApplication4.MainWindow” xmlns=" xmlns:x=" Title="MainWindow" Height="350" Width="525"> <Grid></Grid> </Window>

4 XAML névterek <Window x:Class="WpfApplication4.MainWindow” xmlns=" xmlns:x=" ... XAML-specifikus kulcsszavakat (és a System.Windows.Markup .NET névtér néhány típusát) tartalmazza: Class, Null, Static, Array, ClassModifier, FieldModifier, DynamicResource, StaticResource, Key, Name, Code, … Mindegyik speciális kulcsszó használata sajátos, néhányat fogunk csak tanulni Ennek a névtérnek a neve hagyományosan x, az ebből érkező kulcsszavakat x: prefixszel kell ellátni Sajátos, ergo külön-külön fogjuk tanulni amit tanulni fogunk egyáltalán ezekből. x:Class : osztály nevének megadása x:ClassModifier: osztály láthatóságának módosítása (az alapértelmezett public lenne) x:FieldModifier: a gomb példány láthatóságának módosítása <Window x:Class="WpfApplication4.MainWindow” x:ClassModifier="internal" xmlns=" xmlns:x=" Title="MainWindow" Height="350" Width="525"> <Button Content="START!" Name="buttonStart” x:FieldModifier="public"/> </Window>

5 XAML névterek Tetszőleges .NET-es névterek használata:
clr-namespace: a névtér neve assembly: az assembly neve, amely a megadott névteret (vagy egy részét) tartalmazza. Tipikusan a .dll vagy .exe fájl neve, a kiterjesztés nélkül. Gyári .NET névterek esetében általában benne van a dokumentációban, pl IEnumerable<T> interfész MSDN dokumentációja: <Window x:Class="WpfApplication4.MainWindow" ... xmlns:System="clr-namespace:System;assembly=mscorlib”> <x:Array Type="System:String"> <System:String>Hello</System:String> <System:String>World</System:String> </x:Array> </Window>

6 Adatkonverziók Adatkonverziók: Gyakran automatikus!
Pl: ListBox kerete vegye fel a ListBox-ban kijelölt színt. A ListBox-ban lévő elemek stringek. Egyébként az IValueConverter interfészt implementáló konverterosztállyal valósítható meg (System.Windows.Data) Két metódusa: Convert(), ConvertBack() Convert(): amikor az értéket átadjuk a forrásból a célba ConvertBack(): amikor a forrás megkapja az értéket a célból (kétirányú vagy forrás felé irányuló kötésmód esetén) A ConvertBack() után, amikor a forrásba került az érték, még egyszer hívódik a Convert(). <ListBox x:Name="listBoxSzinek" BorderBrush= "{Binding ElementName=listBoxSzinek, Path=SelectedItem}” .../>

7 Adatkonverziók Személy osztály: Kötés: szemely.Kor  label.Content
Név (string) Kor (int) Kötés: szemely.Kor  label.Content <Window ... xmlns:current="clr-namespace:WpfApplication9” ... > <Grid> <Grid.Resources> <current:KorValueConverter x:Key="KorConverter"/> </Grid.Resources> <Label Content="Személy neve:" .../> <Label Content="Személy kora kb.:" .../> <Label Content="{Binding Nev}” .../> <Label Content="{Binding Kor, Converter={StaticResource KorConverter}}” ... /> </Grid> </Window> Névtér behivatkozása KorConverter néven hivatkozható konvertáló példány létrehozása a Grid erőforrásszótárában Cél: Kor konverziója szöveges értékké (objectté a Content miatt igazából, de ez most mindegy) Konvertáló hozzárendelése a kötéshez

8 Adatkonverziók Konvertáló osztály
Csak egyirányú kötésre alkalmas ebben a formában, egyébként a visszafelé való konverzió implementálása is szükséges lenne class KorValueConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) int kor = (int)value; if (kor < 18) return "gyerek"; else if (kor < 30) return "fiatal"; else if (kor < 50) return "középkorú"; else if (kor < 65) return "idősebb"; else return "idős"; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) throw new NotImplementedException();

9 Erőforrások Az erőforrás olyan objektum, amit különféle helyeken fel/újrahasználhatunk az alkalmazásunkban Típusok: Logikai/objektum erőforrások: tetszőlegesen (XAML-ben) létrehozott objektumok Bináris erőforrások: képek, ikonok, sztringtáblázatok stb. A logikai erőforrásokat az erőforrásszótár tartalmazza, mindegyik el van látva névvel (x:Key) Resources tulajdonság (FrameworkElement utódokban) Tartalmazott elemek megkapják a tartalmazójuk erőforrásait <Window ... <Grid> <Grid.Resources> <current:KorValueConverter x:Key="KorConverter"/> </Grid.Resources> ... </Grid> </Window> KorConverter néven hivatkozható objektumerőforrás (KorValueConverter példány) létrehozása a Grid erőforrásszótárában

10 Erőforrások Logikai/objektumerőforrások használata még rengeteg más helyen: Ecsetek, színek, stílusok, Data Template-ek, konverterek, tetszőleges objektumok (pl. tömbök)… Pl: szín (ecset) létrehozása az erőforrásszótárban: Fajtái: StaticResource: a XAML betöltésekor, egyszer töltődik be, ezután a változtatásokat nem veszi figyelembe DynamicResource: futásidőben töltődik be, változtatható <Window ...> <Grid> <Grid.Resources> <SolidColorBrush x:Key="kedvencSzinem" Color="Azure"/> </Grid.Resources> ... <Label Background="{StaticResource ResourceKey=kedvencSzinem}" Content="Szép színű" .../> <ListBox Background="{StaticResource ResourceKey=kedvencSzinem}" .../> </Grid> </Window> A StaticResource will be resolved and assigned to the property during the loading of the XAML which occurs before the application is actually run. It will only be assigned once and any changes to resource dictionary ignored. A DynamicResource assigns an Expression object to the property during loading but does not actually lookup the resource until runtime when the Expression object is asked for the value. This defers looking up the resource until it is needed at runtime. A good example would be a forward reference to a resource defined later on in the XAML. Another example is a resource that will not even exist until runtime. It will update the target if the source resource dictionary is changed.

11 Erőforrások Bináris erőforrások:
A projekthez bármilyen fájl hozzáadható, amire az alkalmazásnak később szüksége lehet A bináris erőforrások közé való felvételük a megfelelő fordítási beállítással érhető el (Solution Explorerben kijelölés, Properties ablak – Build Action) Resource: a fordító a .NET szerelvénybe építi az adatokat – előnye, hogy így mindig az alkalmazás rendelkezésére állnak Content: az adatok külön fájlokként állnak rendelkezésre – lecserélhetők, de figyelmetlen felhasználó pl. törölheti őket Fájlnév szerint hivatkozunk rájuk a XAML-ben <Image Source="LockScreen___0600_0337.jpg" />

12 Feladat Csapat = center + left wing + right wing + 2 defender + goalie
Név = csak karakterek


Letölteni ppt "Adatkonverziók Erőforrások"

Hasonló előadás


Google Hirdetések