Value Converters, Styles, Triggers, DataTemplates, ControlTemplates - Viikkotehtävä 5
Tee valitsemasi taso WPF-ohjelmana. Tekemäsi ohjelman on toimittava samalla tavalla kuin malliohjelman. Myös värien tarvii olla mallia suurinpiirtein vastaavat. Ohjelman on skaalauduttava ikkunan koon mukana. Malliohjelmien mahdollisia bugeja ei myöskään tarvitse toistaa ;-)
Taso 1
Toteuta malliohjelmaa vastaava ohjelma kirjoittamatta riviäkään omaa ohjelmakoodia. Tee siis koko toteutus pelkästään XAML-tiedoston avulla käyttäen tyylejä, triggereitä ja controltemplateja.
Toteuta käyttäen Grid-panelia ja CheckBox-kontrolleja.
Vinkki: ulkomuotoile CheckBox uudelleen
Väritys ja muoto on helpointa tehdä kun piirtää ellipsejä. Ulkoasun luomiseen ei ole yhtä ainutta oikeaa tapaa.
Taso 3
Toteuta malliohjelmaa vastaava ohjelma. Huomaa, että listboxin sisällön ulkoasu muuttuu henkilön maan mukaan. Huomaa myös, että hiiren vieminen lista-alkion päälle vaikuttaa lista-alkion ulkoasuun.
Omaa ohjelmakoodia saat tuottaa enintään omien ValueConvertterien muodossa. Käytä ohjelmasi pohjana valmista mallikoodia, joka luo tarvittavan datan listboxia varten. Et saa muuttaa MainWindow- ja Henkilo-luokkia millään tavalla mutta voit lisätä omia uusia IValueConverter-luokasta perittyjä luokkia, jos luulet niitä tarvitsevasi.
Tee siis koko toteutus mahdollisimman pitkälle vain XAML-tiedoston avulla käyttäen tyylejä, triggereitä, datatemplateja ja controltemplateja.
Taso 5
Toteuta malliohjelmaa vastaava ohjelma.
- listboxin sisällön ulkoasu muuntuu henkilön iän perusteella kansalaisuuden lisäksi. Alle 20-vuotiaat, 20-60-vuotiaat ja yli 60-vuotiaat esitetään eri tavoin.
- Valittuna olevien numeroiden reunuksen väri muuttuu sliderien säätöjen perusteella
- Valittaessa kolme kirjainta rivissä pysty-, vaaka- tai vinosuuntaan ilmestyy oikeaan ylälaitaan teksti "Valmis rivi!". Muissa valintatilanteissa oikeassa ylänurkassa lukee "Peli kesken"
Omaa ohjelmakoodia saat tuottaa enintään omien ValueConvertterien muodossa. Käytä ohjelmasi pohjana valmista mallikoodia, joka luo tarvittavan datan listboxia varten. Et saa muuttaa MainWindow- ja Henkilo-luokkia millään tavalla mutta voit siis lisätä omia uusia IValueConverter-luokasta perittyjä luokkia jos luulet niitä tarvitsevasi.
Tee siis koko toteutus mahdollisimman pitkälle vain XAML-tiedoston avulla käyttäen valueconverttereita, tyylejä, triggereitä, datatemplateja ja controltemplateja.
Taso 5 edellyttää pientä tutustumista monimutkaisempiin valueconverttereihin ja triggereihin.
Vinkkejä
- The Grid - Rows & columns
-
Datacontextin määritys xamlissa:
ItemsSource="{Binding ElementName=ikkuna, Path=Henkilot}"
missä ikkuna on MainWindowin x:Name. tai monimutkaisempi versio:
<ListBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=OmaProperty}">
- Listbox items orientation to horizontal
Käyttäjien kommentit