Eigener FeedReader für WP8 #1

Wie ich bereits in meinem Blog angekündigt habe, möchte ich zusammen mit euch einen kleinen RSS-FeedReader für Windows Phone 8 programmieren. Dieser ist allerdings sehr rudimentär und kann gerade einmal den Text aus eurem Feed anzeigen, aber trotzdem kann man an diesem Beispiel viel lernen und dann legen wir auch gleich los. In diesem Teil wollen wir das Datenmodell erstellt, dazu starten wir Visual Studio.

Wir erstellen ein neues Windows Phone Projekt und zwar verwenden wir die leere App als Vorlage und geben dieser den Namen FeedReader und bestätigen den Dialog mit einen Klick auf OK.

neues Projekt wird erstellt

neues Projekt wird erstellt

Im nächsten Schritt werden wir nach der Plattform gefragt. Hier lassen wir die Voreinstellung von Windows Phone 8.0 und bestätigen auch diesen Dialog mit einen Klick auf OK.

feedreader_wp8_1_02

die App entwickeln wir für Windows Phone 8.0

Nun werden wieder ein paar Dateien im Hintergrund angelegt, welche notwendig sind. Nach diesem Vorgang können wir beginnen unsere eigene Logik zu integrieren. Dazu klickt ihr im Solution Explorer auf den Solution-Namen, in diesem Falle FeedReader und drückt die rechte Maustaste. Wählt nun AddNew Folder aus dem Kontextmenü und vergebt den Namen DataModel für den Ordner. Nun klickt ihr erneut rechts aber dieses Mal auf den neuen Ordner DataModel und wählt aus dem Kontextmenü AddClass aus. Als Namen der Klasse wählen wir FeedItem und bestätigen durch das Drücken des Add-Buttons.

neue Klasse wird erstellt

neue Klasse wird erstellt

Bei dieser Datei handelt es sich um unser Modell für einen einzelnen Blog-Beitrag. Diese Datei wird automatisch für uns geöffnet und wir können direkt unseren Code einfügen. Zunächst schreiben wir das Schlüsselwort public vor die Klassendefinition, damit wir später auf den Inhalt auch zugreifen können. Das ganze sieht dann so aus:

Zunächst geben wir nun an, dass unsere Klasse das Interface INotfiyPropertyChanged implementieren wird. Hierbei handelt es sich um eine Funktionalität, welche verwendet werden soll, wenn sich die Daten zur Laufzeit ändern, denn dann wird zum Beispiel die GUI über diese Änderung informiert. Um das Interface zu implementieren fügt ihr an die Klassendefinition einfach : INotifyPropertyChanged ein. Standardmäßig wird dies jedoch nicht erkannt und es wird euch rot unterstrichen.

INotifyPropertyChanged ist unbekannt

INotifyPropertyChanged ist unbekannt

Navigiert nun mit der Maus hinter das INotfiyPropertyChanged und drückt gleichzeitig die Tasten [STRG] und [Punkt]. Wenn ihr euch nicht vertippt habt, schlägt euch Visual Studio vor das Paket Paket System.ComponentModel zu importieren, was ihr einfach mit einem entsprechenden Klick oder durch Drücken von [ENTER] bestätigt.

Einfügen der neuen Referenz

Einfügen der neuen Referenz

Nun beginnen wir damit, dass wir zunächst das eingebundene Interface auch implementieren. Dazu fügen wir neben einer Variablen noch eine kleine Methode ein. Gebt dafür einfach den folgenden Code zwischen den geschweiften Klammern ein.

Im nächsten Schritt implementieren wir nun die Eigenschaften, welche ein Blog-Beitrag bei uns haben soll. Dazu zählen zum einen die Überschrift, das Datum, der Link zum Beitrag im Internet und natürlich der eigentliche Inhalt. Daher fügen wir nun noch die folgenden Variablen und Getter- und Setter-Methoden in unsere FeedItem-Klassen hinzu.

Natürlich steht es euch frei weitere Eigenschaften zu eurem Modell hinzuzufügen, wie z.B. den Autor oder ähnliches, aber ich belasse es für dieses Beispiel bei diesen vier Eigenschaften.

Nun erstellen wir noch die Methode, welche die Daten aus dem Internet bezieht und lokal in unserem Modell abspeichert. Dazu klicken wir mit der rechten Maustaste auf unseren Ordner DataModel und wählen wieder AddClass aus. Diese Klasse wollen wir FeedViewModel nennen und bestätigen durch Add.

neue Klasse hinzufügen

neue Klasse hinzufügen

Auch diese Klasse bezeichnen wir mit public und implementieren das INotifyPropertyChanged-Interface. Damit erhalten wir bereits den folgenden Code:

Zunächst fügen wir eine Variable für die Feed-Url in unserem Code ein. Als Beispiel verwende ich hier den Feed des Microsoft Academic-Teams, aber fast jede Webseite bietet mittlerweile einen RSS-Feed an. Außerdem fügen wir eine Liste für unsere Blogeinträge ein. Auch hier wird die ObservableCollection nicht standardmäßig erkannt, aber durch [STRG] und [Punkt] wird die entsprechende Referenz eingebunden.

Nun erstellen wir den Konstruktor für unsere Klasse und initialisieren unsere Liste und beginnen den Download des Feeds.

Die Methode LoadFeed() ist natürlich noch nicht implementiert und wird ebenfalls rot unterstrichen. Daher implementieren wir direkt diese Methode. Wobei die WebClient-Klasse standardmäßig nicht erkannt wird, aber über [STRG] und [Punkt] eingebunden wird.

Da der EventHandler wc_DownloadStringCompleted noch nicht implementiert ist, holen wir dieses direkt nach und implementieren diese. Hierbei hilft uns die Tastenkombination [STRG] und [Punkt] weiter, denn XELement und MessageBox stehen uns sonst nicht zur Verfügung. Außerdem muss man eventuell den Code für seine eigene Webseite anpassen und andere Elemente aus dem XML-Feed laden, da die Konfiguration zum Teil abweichen kann.

Damit ist unser Datenmodell auch soweit fertig und die Daten werden jetzt bereits abgerufen und in der Variablen _items gespeichert. Im nächsten Teil der Serie werden wir dann eine Anzeige für unsere Daten implementieren, damit wir diese auch betrachten können.

You may also like...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *