Windows Presentation Foundation (WPF)- Luento 12
Luentotaltiointi
Ongelmia videon katselussa?Demo 5
Mallivastauksessa vuokrauksen muokkaaminen ei toimi täysin koska oliomalli ei anna muokata olioiden avaimia ja vuokrauksessa on käytössä yhdistetty avain (vuokraaja, elokuva ja vuokrauspvm). Tämä on valitettava ongelma oliomallin kanssa. Tämä voidaan kiertää muuttamalla joko tietokannan rakennetta siten, että vuokraus-tauluun lisätään erillinen id-kenttä perusavaimeksi ja tehdään nykyisestä avaimesta erillinen rajoite. Toinen vaihtoehto on vuokrauksen tietoja muutettaessa poistaa vanha vuokraustieto kokonaan ja luoda sen tilalle uusi, joka on identtinen vanhan kanssa poislukien muuttunut vuokrauspvm.
Tehtävä kolmosen viimeinen osa eli elokuvien suosittelu vaatii joko monimutkaista/monimutkaisia linq-kyselyjä tai sitten asian kiertämistä SQLn avulla. Oleellista on saada ensin tieto siitä mikä on kunkin jäsenen suosituin lajityyppi ja se voidaan tehdä seuraavalla SQL-kyselyllä:
SELECT Jasen.JasenID, Lajityyppi.LajityyppiID, Jasen.Nimi, Lajityyppi.Tyypinnimi, COUNT(*) AS lkm
FROM Lajityyppi INNER JOIN
Elokuva ON Lajityyppi.LajityyppiID = Elokuva.LajityyppiID INNER JOIN
Vuokraus ON Elokuva.ElokuvaID = Vuokraus.ElokuvaID INNER JOIN
Jasen ON Vuokraus.JasenID = Jasen.JasenID
GROUP BY Lajityyppi.LajityyppiID, Lajityyppi.Tyypinnimi, Jasen.JasenID, Jasen.Nimi
ORDER BY Jasen.Nimi, lkm DESC, Lajityyppi.Tyypinnimi
Tämä kysely kannattaa sijoittaa tietokantaan näkymäksi (view) niin sitä on sitten helppo käytellä oliomallin kautta. Lisääminen onnistuu Server Explorerin kautta. Tämän jälkeen vain päivittää oliomallin ajantasalle niin näkymä ilmestyy taulujen joukkoon.
Ohjelmakoodissa riittää nyt, kun tiedetään jäsen ja voidaan jäsenid:n perusteella näkymästä ottaa listaus tämän jäsenen lajityypeistä. Tämän ja vuokraustietojen perusteella voidaan sitten listata elokuvia halutussa järjestyksessä.
Elokuvat joita tietty henkilö EI ole vielä vuokrannut:
SELECT Nimi, Arvio
FROM Elokuva
WHERE (ElokuvaID NOT IN
(SELECT ElokuvaID
FROM Vuokraus
WHERE (JasenID = 3)))
ORDER BY Arvio DESC
WPF
WPF on rakennettu DirectX-rajapinnan päälle ja tarjoaa laitteistokiihdytyksen ja modernimpia käyttöliittymäominaisuuksia kuin Windows Forms.
WPF on resoluutioriippumaton ja vektoripohjainen.
XML-pohjaisella XAML (Extensible Application Markup Language) kielellä määritellään käyttöliittymä. Tämä mahdollistaa saman käyttöliittymän käyttämisen monissa ympäristöissä.
XAMLin avulla Käyttöliittymään voi määritellä tyylejä (vrt. WWW-sivuilla käytetty CSS).
Käyttöliittymä ja ohjelmakoodi saadaan pidettyä hyvin erillään
_ on sama kuin &-merkki windows formsissa.
- Canvas: Child controls provide their own layout.
- DockPanel: Child controls are aligned to the edges of the panel.
- Grid: Child controls are positioned by rows and columns.
- StackPanel: Child controls are stacked either vertically or horizontally.
- VirtualizingStackPanel: Child controls are virtualized and arranged on a single line that is either horizontally or vertically oriented.
- WrapPanel: Child controls are positioned in left-to-right order and wrapped to the next line when there are more controls on the current line than space allows.
Data binding
Lisätietoa
- Introduction to WPF
- Nick’s Twisted Perspectives on Styles and Templates
- WPF tutorial | XAML
- The Ins and Outs of Dependency Properties and Routed Events in WPF
- WPF tutorial - Introduction to Dependency Properties
- WPF Data Binding: part 1
- WPF Data Binding: part 2
- Resources overview
- Attached Properties Overview
- Databinding overview
- Shapes and Basic Drawing in WPF overview
- DrawingContext
- Styling and Templating
http://en.wikipedia.org/wiki/Windows_Presentation_Foundation http://msdn.microsoft.com/en-us/library/ms754130.aspx http://www.wpftutorial.net/ http://joshsmithonwpf.wordpress.com/2007/09/05/wpf-vs-windows-forms/ http://mdavey.wordpress.com/2007/09/05/wpf-vs-windows-forms/

Käyttäjien kommentit