Kezdőoldal > .NET, Windows Phone 7 > Jegyzetfüzet alkalmazás készítése

Jegyzetfüzet alkalmazás készítése

2012. május 3. csütörtök Hozzászólás Go to comments

A következő gyakorlatban egyszerű jegyzetelő alkalmazást fogunk elkészíteni (6-4 ábra). Az alkalmazás felhasználói felülete előre el van készítve. A projekt kiindulási anyagát a következő oldalról tölthetjük le: http://devportal.hu/wp7 (Példakódok.zip).

image

A gyakorlatban csak az adattárolással kapcsolatos kódokat fogjuk közösen megírni, az alábbi lépésekben:

1. Nyissuk meg az IsolatedStorageDemo.sln fájlt (Begin mappa)! Ha valamit a gyakorlat lépései során nem sikerülne pontosan követnünk, az End mappában megtalálható és kipróbálható az alkalmazás végleges formája.

2. Fordítsuk le, és indítsuk el az alkalmazást! Egyszerű jegyzetelő felületet kapunk, de jelenleg még nem tudjuk sem elmenteni, sem betölteni jegyzeteinket.

3. Itt az ideje ezeket a funkciókat megvalósítani! Zárjuk be a futó alkalmazást, és térjünk vissza a projekthez! Nyissuk meg az App.xaml.cs fájlt, és navigáljunk el az Application_Startup eseményhez, itt fogjuk a jegyzeteink számára elkészíteni a „Notes” mappát. Az alkalmazás minden indulásakor megvizsgáljuk a DirectoryExist metódussal, hogy a Notes mappa létezik-e. Ha nem létezik (pl. első indulás), akkor a CreateDirectory metódussal létrehozzuk:

IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();

if (!isf.DirectoryExists("Notes"))

{

    isf.CreateDirectory("Notes");

}

4. Nyissuk meg a MainPage.xaml.cs fájlt, és oldjuk fel a System.IO és a System.IO.IsolatedStorage névteret (a feladatban a többi lapjához már hozzáadtuk ezeket a névtereket)!

using System.IO;

using System.IO.IsolatedStorage;

5. A MainPage.xaml.cs-ben navigáljunk el a btnSave_Click eseményhez, ugyanis itt fogjuk elmenteni a jegyzetünket a fájlrendszerbe. Először a path változóban létrehozunk egy útvonalat a jegyzeteink számára: azok a Notes mappába fognak kerülni, és .dat lesz a kiterjesztésük. Ezt követően létrehozunk egy IsolatedStorageFileStream-et. Ezt legegyszerűbben a StreamWriter-rel tudjuk írni, így a mySw példány WriteLine metódus paraméterének átadjuk a txtDocument.Text tulajdonságának értékét. Ha minden sikeresen lezajlott, akkor egy MessageBox-ban ezt megüzenjük a felhasználónak.

string path = "Notes\\" + txtTitle.Text + ".dat";

IsolatedStorageFile myISFile = IsolatedStorageFile.GetUserStoreForApplication();

using (IsolatedStorageFileStream myFs = new IsolatedStorageFileStream(path, FileMode.Create, FileAccess.Write, myISFile))

{

    using (StreamWriter mySw = new StreamWriter(myFs))

    {

        mySw.WriteLine(txtDocument.Text);

        mySw.Flush();

    }

}

MessageBox.Show("A jegyzetedet elmentettük!", "Isolated Storage Demo", MessageBoxButton.OK);

6. Most már elkészítettük az alkalmazásunk jegyzet (Notes) mappáját, és el is tudjuk menteni a jegyzeteinket. Itt az ideje megírni azt is, hogy a korábban elmentett jegyzeteinket vissza tudjuk tölteni. Nyissuk meg a Pages/SavedItems.xaml.cs fájlt, és navigáljunk el a SavedItems konstruktorába: itt fogjuk kiolvasni a fájlrendszerről, hogy jelenleg milyen jegyzeteink vannak mentve. Ehhez az IsolatedStorageFile példány GetFileNames metódusát fogjuk segítségül hívni az alábbi módon:

IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();

lstMyNotes.ItemsSource = isf.GetFileNames("Notes\\*.dat");

A GetFileNames visszatérési értéke egy String tömb, ezt adjuk át az lstMyNotes listának.

7. Az előző pontnál megjelenítettük a jegyzeteink fájljait egy listában, most pedig megírjuk azt az egyszerű funkciót, amivel a kiválasztott fájlt átadjuk a MainPage-nek, ami majd megnyitja az adott jegyzetet. Navigáljunk el az lstMyNotes_SelectionChanged eseményhez, és a metódus törzsébe írjuk a következőt:

string selectedItem = lstMyNotes.SelectedItem as string;

if (selectedItem != null)

{

    NavigationService.Navigate(new Uri("/MainPage.xaml?OpenFile=" + selectedItem, UriKind.Relative));

}

Itt egyszerűen a kiválasztott fájl nevét átadjuk a MainPage-nek, méghozzá a QueryString átadási mintát követve.

8. Természetesen, ha átadtuk ezt a paramétert, akkor azt le is kell kérdeznünk, és az átadott értéknek megfelelően megnyitni az adott fájlt. Térjünk vissza a MainPage.xaml.cs –hez, és navigáljunk el az OnNavigatedTo eseményhez, és itt létrehozunk egy fileName nevű string változót. A NavigationContext.QueryString.TryGetValue metódusával megpróbáljuk elérni az OpenFile paraméter értékét. A fájl olvasása a fájlírás analógiájára történik, itt azonban az IsolatedStorageFileStream FileMode felsorolt típusából az Open értéket választjuk, és StreamWriter helyett StreamReader-t használunk. A StreamReader ReadToEnd metódusának segítségével a fájl teljes tartalmát kiolvassuk, ezt követően átadjuk a txtDocument-nek. A txtTitle esetén a fileName szövegből eltüntetjük a .dat kiterjesztést, hogy elegánsabban jelenjen meg a fejléc:

string fileName = string.Empty;

if (NavigationContext.QueryString.TryGetValue("OpenFile", out fileName))

{

    IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();

    using (IsolatedStorageFileStream myFs = new IsolatedStorageFileStream("//Notes//" + fileName, FileMode.Open, isf))

    {

        using (StreamReader sr = new StreamReader(myFs))

        {

            txtTitle.Text = fileName.Replace(".dat", "");

            txtDocument.Text = sr.ReadToEnd();

        }

    }

}

9. Ezzel elkészült az alkalmazásunk. Fordítsuk le a forráskódot (Ctrl+Shift+B), és ha valamilyen hibát tapasztalunk, nézzük át újra a kódot és javítsuk azt! Ha minden rendben lezajlott, akkor indítsuk el az alkalmazásunkat (F5), és az megjelenik kezdőképernyőjén a jegyzeteink listájával.

image

10. Az alkalmazás betöltése után írjunk egy jegyzetet, majd kattintsunk a mentés gombra! Készítsünk egy új jegyzetet (+), ezt követően kattintsunk a megnyitás gombra! A megjelenő ablakban a jegyzeteink lesznek láthatók. Válasszunk ki egy jegyzetet, és a következő pillanatban már a főképernyőn láthatjuk a jegyzetünk tartalmát! Ha ezeket a lépéseket sikerült elvégeznünk, akkor eddig a feladatot helyesen oldottuk meg. Zárjuk be az alkalmazást, és térjünk vissza a Visual Studio-hoz!

11. A fájlkezeléshez hozzátartozik a beállítások kezelése is. A következőkben a jegyzetelő alkalmazásunkat kiegészítjük egy olyan beállítással is, melynek segítségével a felhasználó meghatározhatja, hogy a jegyzetek betűszíne milyen legyen. Nyissuk meg a Pages/Settings.xaml.cs fájlt, és navigáljunk el az lpForeground_SelectionChanged metódushoz, majd a feltételbe írjuk a következő kódsorokat:

IsolatedStorageSettings.ApplicationSettings["Foreground"] = selectedItem.Key;

NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));

Itt az IsolatedStorageSettings.ApplicationSettings Foreground kulcsához hozzáadjuk a kiválasztott szín kulcsának értékét, majd visszanavigálunk a MainPage oldalra.

12. Ha már kiválasztottunk egy színt, és el is van tárolva, akkor azt a következő Settings page-re navigáláskor jelenítsük meg a felhasználó számára! Navigáljunk el a Settings konstruktorához, és töltsük be a használt szín indexét:

IsolatedStorageSettings.ApplicationSettings.TryGetValue<int>("Foreground", out currentIndex);

13. Itt az IsolatedStorageSettings.ApplicationSettings.TryGetValue metódusát használjuk. Használhatnánk az indexeres formát is, de a TryGetValue egyik nagy előnye az, hogy ha az adott kulcs (esetünkben Foreground) még nem létezik, akkor sem jelez hibát, a változó pedig az alapértelmezett értékét kapja (ebben az esetben a 0-t, ami kötés után a fekete színt reprezentálja).

IsolatedStorageSettings.ApplicationSettings.TryGetValue<int>("Foreground", out foregroundColorIndex);

Csakúgy, mint a Settings page-nél, itt is kiolvassuk a foreground tulajdonságot, majd alkalmazzuk a szövegdobozon.

14. Immár kész a teljes alkalmazás. Fordítsuk le a forráskódot (Ctrl+Shift+B), és ha valamilyen hibát tapasztalunk, nézzük át újra a kódot, és javítsuk azt! Ha minden rendben lezajlott, akkor indítsuk el az alkalmazásunkat (F5)!

15. Készítsünk egy jegyzetet, majd mentsük el! Válasszuk ki a beállítások menüpontot, és a megjelenő ablakban válasszunk ki egy nekünk tetsző színt! Ha kiválasztottunk egy új színt, akkor az alkalmazás rögtön visszanavigál a MainPage oldalra, ahol láthatjuk, hogy a jegyzetünk betűszíne megegyezik az általunk kiválasztott színnel.

image

Ezen a gyakorlaton keresztül is láthattuk, hogy a fájlkezelés rendkívül egyszerű a Windows Phone –on. Minden alkalmazás rendelkezhet IsolatedStorage-dzsal, ahol fájlműveleteket végezhet, de ebből a kontextusból nem tud kibújni.

Advertisements
Kategóriák:.NET, Windows Phone 7 Címke: , ,
  1. Még nincs hozzászólás.
  1. No trackbacks yet.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s

%d blogger ezt kedveli: