Windows Phone 7 Kódgyűjtemény

  • Upload
    faaust

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    1/102

    1 | O l d a l

    WINDOWS PHONE 7

    KDGYJTEMNY

    Turczy Attila

    Livesoft Kft.

    2012.03.01.

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    2/102

    2 | O l d a l

    Kszlt a Microsoft Magyarorszg megbzsbl

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    3/102

    3 | O l d a l

    TartalomjegyzkElsz....................................................................................................................................................... 5

    Kperny orientci mdostsa ............................................................................................................ 6

    Software Input Panel (SIP) ....................................................................................................................... 8

    System Tray ........................................................................................................................................... 10

    Application Bar ...................................................................................................................................... 12

    Vibrci .................................................................................................................................................. 14

    FM Rdi ................................................................................................................................................ 16

    Hlzati Informcik ............................................................................................................................. 17

    Navigci ............................................................................................................................................... 20

    Navigci Paramter tadsa ............................................................................................................. 21

    Navigci Objektum tadsa .............................................................................................................. 23

    Back button ........................................................................................................................................... 24

    Telefonhvs indtsa ............................................................................................................................. 25

    SMS-klds ............................................................................................................................................ 26

    E-mail kldse ....................................................................................................................................... 28

    Web oldal betltse .............................................................................................................................. 29

    Mdiatartalom lejtszsa ...................................................................................................................... 30

    Keress a weben .................................................................................................................................... 31

    Kamera hasznlata ................................................................................................................................ 32

    Photo Library elrse ............................................................................................................................ 34

    Telefonszm mentse ........................................................................................................................... 36

    Telefonknyv Nvjegy kivlasztsa .................................................................................................... 37

    Figyelmeztetsek s riasztsok ............................................................................................................. 38

    GPS koordintk lekrdezse ................................................................................................................ 40

    BingMaps vezrl hasznlata ................................................................................................................ 42

    BingMaps PushPinek ............................................................................................................................. 44

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    4/102

    4 | O l d a l

    tvonaltervezs ..................................................................................................................................... 45

    Gyorsulsmr hasznlata .................................................................................................................... 49

    Giroszkp hasznlata ............................................................................................................................. 52

    Irnyt hasznlata ................................................................................................................................. 54

    User Control ksztse ........................................................................................................................... 56

    PopUp .................................................................................................................................................... 58

    DatePicker Windows Phone 7 Toolkit ................................................................................................ 60

    ExpanderView Windows Phone 7 Toolkit........................................................................................... 61

    MultiselectList Windows Phone 7 Toolkit .......................................................................................... 64

    PageTransition Windows Phone 7 Toolkit .......................................................................................... 65

    HubTile Windows Phone 7 Toolkit ..................................................................................................... 67

    WrapPanel Windows Phone 7 Toolkit ................................................................................................ 69

    ContextMenu Windows Phone 7 Toolkit ........................................................................................... 71

    Vezrl testreszabsa Expression Blend ............................................................................................ 73

    Animci ltrehozsa Expression Blend ............................................................................................. 74

    Animci ltrehozsa XAML (ProgressBar) ........................................................................................ 77

    Animci ltrehozsa Kdbl ............................................................................................................. 79

    Pivot s Panorma ................................................................................................................................. 80

    I/O mveletek........................................................................................................................................ 84

    Alkalmazs belltsok........................................................................................................................... 86

    Jegyzetfzet alkalmazs ksztse ......................................................................................................... 89

    Adatbzis ltrehozsa............................................................................................................................ 94

    Read-Only adatbzis ltrehozsa .......................................................................................................... 96

    Webszolgltatsok elrse .................................................................................................................. 101

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    5/102

    5 | O l d a l

    ElszAmikor valaki a kezbe (vagy a monitorra) veszi ezt a knyvet, rgtn szembetnik, hogy

    ez nem szokvnyos szakmai knyv hosszas lersokkal, s ltalnos kijelentsekkel.

    Ezen knyv megrsnak az alaptlete az volt, hogy rthet, a Windows Phone 7

    fejlesztsben tapasztalatlan szakemberek szmra is tlthat tmutatkat ksztsnk,

    melyek segtenek eligazodni ezen j terlet fejlesztsben. Pont ezrt a Windows Phone 7

    fejlesztsnek lnyegesebb terleteit kiemelve, a legtbb funkcihoz tallunk benne rvid,

    maximum 1-2 oldalas lersokat, melyek lpsrl lpsre vezetnek vgig egy-egy alkalmazs

    megrsban, s a kdok is szerepelnek minden lpsnl.

    A knyvben mindent meglelnk, amire csak szksgnk van: a rdi-alkalmazstl kezdve, a

    GPS kezelsen keresztl a Windows Phone 7 toolkit vezrlkig, s az els lpsekben is nagysegtsget nyjt. A fejezetek nem kapcsoldnak szervesen egymshoz, ahol mgis, ott jellve

    van, gy tetszleges sorrendben haladhatunk, nem fontos az ltalunk sszelltott sorrendet

    kvetni.

    Ebben a knyvben nem megynk bele mlyen az egyes tmkba, hanem pldkon keresztl,

    a gyakorlatban segtnk elsajttani a tudsanyagot. Ha ezen tmk elmleti rsze

    komolyabban is rdekel, akkor minden kell informcit megtallsz a Windows Phone

    Fejleszts lpsrl lpsre cm knyvben. Ez a jegyzet egyfajta kiegsztse az elbb emltett

    knyvnek, melyek egyttes hasznlatval mind elmleti, mind gyakorlati tudsodat

    fejlesztheted.

    Remlem, hasznosnak tallod majd, s segt mindenben, amire szksged lesz a fejleszts

    sorn.

    Turczy Attila

    Budapest, 2012. Februr

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    6/102

    6 | O l d a l

    Kperny orientci mdostsaA Visual Studio 2010-ben, amikor j Windows Phone 7 page-et (oldalt) hozunk ltre, akkor a

    Landscape vagy a Portrait elrendezsek kzl vlaszthatunk.

    A Windows Phone 7 hromfle kperny orientcit tmogat: tmogatja a Protrait-t, a

    Landscape-et, valamint a PortraitOrLandscape-et. Azt, hogy az alkalmazsunk mit

    tmogasson, a PhoneApplicationPage direktvjban hatrozhatjuk meg, a

    SupportedOrientations tulajdonsgnl. Ha ez a tulajdonsg Protrait-ra van lltva, akkor az

    alkalmazsunk csak portr mdban fog futni, gy ha elforgatjuk a kijelzt, akkor sem trtnik

    vltozs. Landscape mdban az alkalmazsunk csak a fektetett megjelentst tmogatja. A

    PortraitOrLandscape belltsval az alkalmazsunk az elbb emltett mind a kt mdot

    tmogatja, gy ha a felhasznl a telefont elforgatja, akkor Landscape mdra vlt azalkalmazs, mg ha visszalltja, akkor portrait mdban fut tovbb.

    Portrait mdSupportedOrientations="Portrait"

    Landscape mdSupportedOrientations="Landscape"

    Feliratkozhatunk az (PhoneApplicationPage) OrientationChanged esemnyre, amivel

    rteslhetnk a vltozsrl, s vltoztathatunk is az orientcin. Ehhez az

    OrientationChangedEventArgsot is hasznlhatjuk, amelynek az Orientation tulajdonsga

    megmondja, hogy a telefon jelenleg milyen pozciban van.

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    7/102

    7 | O l d a l

    privatevoid PhoneApplicationPage_OrientationChanged(object sender,OrientationChangedEventArgs e){

    this.Orientation = e.Orientation;}

    Mg annyit rdemes tudni errl, hogy ha az elforgats utn kicsszik a kpbl a UI elem ,akkor az scroll-ozhat lesz a kpernyn. Teht ha valamit rosszul mrtnk fel a UI-on, a

    felhasznl akkor is tudja hasznlni az alkalmazst, legfeljebb knyelmetlen lesz a

    szmra.Emultorban is megnzhetjk, hogy az alkalmazsunk hogy nzne ki: elfektethetjk a

    kijelzt, ehhez az emultor toolbar-jn kt gomb is van. Bal s jobb irnyba is

    eldnthetjk az emultor kijelzjt.

    http://www.silverlightshow.net/Storage/Users/MisterGoodcat/_______image_8.png
  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    8/102

    8 | O l d a l

    Software Input Panel (SIP)A mobilkszlkeken viszonylag kicsi a kijelz, gy egy teljes rtk billentyzetet nem

    kaphatnak a felhasznlk, m vannak specilis billentyzetek, specilis feladatok elltsra

    (SIP Software Input Panel), amellyel megknnythetjk a munkjukat. Az alkalmazsunk

    tervezsekor figyeljnk arra, hogy a beviteli mezkhz megfelel beviteli panelt adjunk!

    Telefonszm beviteli mezhz teljes bevitelimez felesleges s knyelmetlen. Ilyen esetben a

    TextBox InputScope tulajdonsgt llthatjuk be a szmunkra megfelel tpusra. Ezt a

    tulajdonsgot clszer minden beviteli mez esetben megadni.

    Nzznk hrom textbox-ot, hrom klnbz InputScope-pal!

    Az eredmny:

    Az InputScope-ot dinamikusan, kdbl is megadhatjuk:

    InputScope ins = newInputScope();InputScopeName insName = newInputScopeName();insName.NameValue = InputScopeNameValue.Number;ins.Names.Add(insName);tbTitle.InputScope = ins;

    A Windows Phone 7 ben rengeteg specilis InputScope van. A teljessg ignye nlkl:

    AddressCity AddressCountryName AddressStateOrProvince AddressStreet AlphanumericFullWidth AlphanumericHalfWidth ApplicationEnd Bopomofo Chat CurrencyAmount

    CurrencyAmountAndSymbol

    CurrencyChinese

    Date DateDay DateDayName DateMonth DateMonthName DateYear Default Digits EmailNameOrAddress EmailSmtpAddress

    EmailUserName EnumString

    FileName FullFilePath Hanja Hiragana KatakanaFullWidth KatakanaHalfWidth LogOnName Maps NameOrPhoneNumber Number

    NumberFullWidth OneChar

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    9/102

    9 | O l d a l

    Password PersonalFullName PersonalGivenName PersonalMiddleName PersonalNamePrefix PersonalNameSuffix PersonalSurname PhraseList PostalAddress

    PostalCode Private RegularExpression Search Srgs TelephoneAreaCode TelephoneCountryCode TelephoneLocalNumber TelephoneNumber

    Text Time TimeHour TimeMinorSec Url Xml Yomi

    Lthat, hogy a cm megadstl kezdve, az URL-en keresztl, a keressi beviteli mezkig

    rengeteg scope ll a rendelkezsnkre.

    Tovbbi informcikat a Windows Phone fejleszts lpsrl lpsre knyv harmadik

    fejezetben olvashatunk.

    MSDN Cikk

    https://devportal.hu/wp7/konyvhttps://devportal.hu/wp7/konyvhttp://msdn.microsoft.com/en-us/library/gg521152(v=vs.92).aspxhttp://msdn.microsoft.com/en-us/library/gg521152(v=vs.92).aspxhttp://msdn.microsoft.com/en-us/library/gg521152(v=vs.92).aspxhttps://devportal.hu/wp7/konyv
  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    10/102

    10 | O l d a l

    System TrayA System Tray a rendszer ltal lefoglalt terlet, ahol a

    rendszerinformcik jelennek meg: trer, tltttsg,

    sttuszinformcik stb. Ezt elrejthetjk, de ha nem muszj, ne

    tegyk meg! Ezzel ugyan nyerhetnk nmi terletet, de a

    felhasznltl informcikat rejtnk el (sarktott plda: ha a felhasznl jtszik a kszlkn

    egy online jtkkal, s kzben tmegy az orszghatron, nem fog rlni, amikor megltja a

    telefonszmljn a roaming djat, amit nhny megabyte miatt kell fizetni, amit eljtszott.

    Vagy pp jtk kzben hirtelen lemerl a kszlk.)

    Ha mgis el akarjuk rejteni, akkor azt megtehetjk XAML-ben, a PhoneApplicationPage-nl:

    shell:SystemTray.IsVisible="false"

    Vagy C# kdbl:

    Microsoft.Phone.Shell.SystemTray.IsVisible = false;

    A Windows Phone 7 els vltozatban a System Tray nem sok dologra volt alkalmas.

    Tulajdonkppen csak elrejthettk, ha akartuk, de ms testreszabsra nem volt lehetsg. A

    Mango frisststl kezdve viszont plusz funkcionalitst is kapott, illetve nmi testre

    szabhatsgot is. Sok alkalmazsnl problma volt, hogy az alkalmazsnak volt egy

    alaprtelmezett arculata, de ahhoz a fekete-fehr system tray nem alkalmazkodott, ezrt

    elgg kilgott az alkalmazs fels rsze, gy egy kicsit butn nzhetett ki az alkalmazsunk.Most viszont mr van arra lehetsg, hogy a System Tray szneit is testre szabjuk. Nzznk

    egy pldt XAML-ben!

    A System Tray a testre szabhatsgon kvl kiegszlt egy ProgressIndicatorral is, gy nem

    kell kln progressbar-t hasznlnunk, ha egy hosszabb folyamatot akarunk jelezni a

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    11/102

    11 | O l d a l

    felhasznl szmra. Megtarthatjuk a System Tray-t, s abban elindthatjuk s

    megjelenthetjk a folyamatjelzt.

    A ProgressIndicator-t elhelyezhetjk kdbl. Ehhez szksgnk lesz a Microsoft.Phone.Shell

    nvtrre.

    using Microsoft.Phone.Shell;

    Hozzuk ltre a ProgressIndicator pldnyt (pldul a konstruktorban), s lltsuk be

    szmunkra megfelelen a tulajdonsgait!

    ProgressIndicator pIndicator = newProgressIndicator();pIndicator.IsVisible = true;pIndicator.Text = "Lekrdezs folyamatban...";pIndicator.IsIndeterminate = true;

    Jelen esetben van egy ProgressIndicator-unk, aminek az IsVisible tulajdonsga True, a Texttulajdonsga a Lekrdezs folyamatban szveg, s az IsIndeterminate tulajdonsga True,

    azaz nem hatrozzuk meg, hogy hol tart a folyamat. Ha most elindtannk az alkalmazst,

    nem jelenne meg a ProgressIndicator. Ezt kln meg kell mondanunk a System Tray-nek, az

    albbi mdon:

    SystemTray.SetProgressIndicator(this, pIndicator);

    gy mr ha elindtjuk az alkalmazst (s ha most a konstruktorba helyeztk el a kdot), az

    albbi eredmnyt lthatjuk:

    A ProgressIndicator-t elhelyezhetjk XAML-bl is, s persze tulajdonsgaihoz akr

    adatkthetnk is.

    Plda XAML-ben trtn Progress Indicator megadsra (PhoneApplicationPage s az

    elrendezs vezrl kz helyezhetjk):

    Az eredmny hasonl, mint az elz esetben.

    Ne feledjk: a ProgressIndicator eltntetsrl is neknk kell gondoskodnunk!

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    12/102

    12 | O l d a l

    Application BarAz Application Bar egy kis toolbar a Windows Phone lapon. Maximum ngy ikon gombot

    (icon button) s / vagy tovbbi men elemeket tartalmazhat. Az Application Bar segtsgvel

    az alkalmazsunk f funkciit tehetjk knnyen elrhetv. Br maximum 4 men elemet

    tartalmazhat, mgis ajnlott legfeljebb hrom ikon gombot (icon buttont) hasznlnunk.

    Fontos megjegyezni, hogy az ApplicationBar nem szokvnyos

    vezrl. nem a Silverlight rsze, s elg sok megkts van vele

    kapcsolatban. Egyfell kdbl is nehezebb elrni egyes men

    elemeit, msfell az adatktst sem tmogatja (fleg lokalizci

    esetn kell kerl megoldsokat alkalmazni).

    Nzznk egy egyszer pldt a hasznlatra:

    1. Ksztsnk egy j Windows Phone 7 alkalmazst!2. Ha jl megnzzk a XAML kdot, akkor lthat, hogy az oldalon mr eleve van egy

    plda ApplicationBar elhelyezve, csak ki van kommentezve.

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    13/102

    13 | O l d a l

    7. Jelljk ki a kt kpet, amit az elbb hozzadtunk, s a Properties Window-banlltsuk t a Build Action Contentre!

    8. Trjnk vissza a MainPage.xaml fjlhoz, s a kt ApplicationBarIconButton esetn rjukt az IconUrl tulajdonsgt! Adjuk meg a kpek valdi nevt, s a Text-et mdostsuk

    ennek fggvnyben! A men item-ek Text tulajdonsgt is mdostsuk egy neknk

    szimpatikus szvegre!

    9. Most mr van egy szp, mde haszontalan toolbar-unk. A szimulls vgettiratkozzunk fel az ApplicationBarIconButton Click esemnyre!

    Figyeljk meg, hogy ebben az esetben nem RoutedEventArgs-unk van, hanem egy egyszer

    EventArgs.

    privatevoid Add_AppBarClick(object sender, EventArgs e){

    MessageBox.Show("Hozzadtam!");}

    10.Indtsuk el az alkalmazst, s prbljuk ki az ApplicationBar-t mkds kzben!

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    14/102

    14 | O l d a l

    VibrciLehetsgnk van arra, hogy Vibrcis figyelmeztetseket adjunk a

    felhasznl szmra. Egyfell ez markns visszajelzs, msfell

    kellemes (Na, j, ez relatv .) Ehhez a Microsoft.Devices nvtr

    VibrateController osztlyra lesz szksgnk (Microsoft.Phone

    assembly).

    Vibrajelzst nagyon egyszer adni, ugyanis ennek az osztlynak kt

    metdusa van: egy Start s meglepetsre van egy Stop metdusa is.

    Ksztsnk egy Windows Phone 7 alkalmazst, s helyezznk el a

    felhasznl felletn 2 gombot: az els neve btnStart, a felirata

    (Content) START legyen, a msodik gomb a btnStop nvre hallgasson,a felirata pedig legyen a STOP!

    Kattintsunk a START gombra ktszer, ezzel betltjk az alaprtelmezett esemnyt, a klikket!

    Mieltt az esemny trzst kitltennk, a nvtereknl oldjuk fel a Microsoft.Devices nvteret!

    using Microsoft.Devices;

    Ezt kveten hatrozzuk meg a btnStart klikk esemnynek trzsta kvetkez mdon:

    privatevoid btnStart_Click(object sender, RoutedEventArgs e)

    { VibrateController vibrate = VibrateController.Default;vibrate.Start(TimeSpan.FromMilliseconds(5000));

    }

    Ezzel megkapjuk a VibrateController pldnyt, majd a Start metdus meghvsnl megadjuk,

    hogy a Vibrci mennyi ideig tartson. Ezt milliszekundumban hatrozzuk meg. 1 msodperc

    1000 milliszekundum.

    Ha most elindtjuk az alkalmazst az emultorban, akkor sokat a vibrcibl nem fogunk

    tapasztalni, ezrt ezt a pldt gy tudjuk kiprblni, ha kszlkre deploy-olunk. (Kszlkre

    trtn teleptsrl a Windows Phone 7 lpsrl lpsre 12. Marketplace fejezetbenrszletesen olvashatunk.) Ha ez megvolt, kattintsunk a START gombra, ekkor a telefon 5

    msodpercen keresztl fog vibrlni!

    Trjnk vissza a kdunkhoz, s iratkozzunk fel a STOP gomb klikk esemnyre is, majd a

    btnStop klikk esemnynek trzsbe rjuk a kvetkezt:

    privatevoid btnStop_Click(object sender, RoutedEventArgs e){

    VibrateController vibrate = VibrateController.Default;

    vibrate.Stop();}

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    15/102

    15 | O l d a l

    rtelemszeren, a VirbrateController pldnyt globlisan is elhelyezhetjk, hogy ne kelljen

    folyton a pldnyt lekrdezni. A jobb rthetsg kedvrt itt helyeztk most el.

    Indtsuk el az alkalmazst! Kattintsunk a START gombra, majd 1-2 msodperc mlva a STOP

    gombra. Ilyenkor megszakad a vibrlsa.

    nll feladat: Az SOS morzejelt rjuk meg vibramotor hasznlatval (akr vizulis

    visszajelzst is adhatunk)!

    MSDN Cikk

    http://msdn.microsoft.com/en-us/library/microsoft.devices.vibratecontroller(v=vs.92).aspxhttp://msdn.microsoft.com/en-us/library/microsoft.devices.vibratecontroller(v=vs.92).aspxhttp://msdn.microsoft.com/en-us/library/microsoft.devices.vibratecontroller(v=vs.92).aspx
  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    16/102

    16 | O l d a l

    FM RdiMinden Windows Phone 7 kszlk rendelkezik FM Radio tunner-rel. Ezt

    mi is kezelhetjk a sajt alkalmazsunkbl, gy akr egy sajt komplex FM

    Rdi alkalmazst is kszthetnk.

    Ehhez szksgnk lesz a Microsoft.Devices.Radio nvtrre.

    using Microsoft.Devices.Radio;

    Az FM rdi bekapcsolsa s belltsa nagyon egyszer. Elszr is meg

    kell adnunk, hogy milyen rgis belltsokat szeretnnk hasznlni: ez

    lehet Europe, UnitedStates vagy Japan (RadioRegion enumerci) .

    FMRadio.Instance.CurrentRegion = RadioRegion.Europe;Ezenkvl meghatrozhatjuk, hogy bekapcsoljuk-e a rdit (kt llapota lehet, On s Off)

    (RadioPowerMode enumerci):

    FMRadio.Instance.PowerMode = RadioPowerMode.On;

    Ezt kveten mr csak frekvencit kell meghatroznunk:

    FMRadio.Instance.Frequency = 103.9;

    Amint lthat, mindsszesen hrom sor kell ahhoz, hogy egy egyszer FM rd is

    alkalmazsunk legyen Windows Phone 7-en. Itt megintcsak nem hasznlhatjuk ennekkiprblsra az emultort, kszlkre kell publiklnunk az alkalmazst, de figyeljnk arra is,

    hogy az FM rdi csak akkor fog elindulni, ha a headset be van dugva a kszlkbe, ugyanis a

    headset-ben van az antenna (a kszlk hangerejre is figyeljnk)!

    MSDN Cikk

    http://msdn.microsoft.com/de-de/library/ff769541.aspxhttp://msdn.microsoft.com/de-de/library/ff769541.aspx
  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    17/102

    17 | O l d a l

    Hlzati InformcikLekrdezhetjk, hogy jelenleg van-e hlzati lefedettsgnk. Ehhez a

    NetworkInterface.GetIsNetworkAvailable() metdust hasznlhatjuk fel. A NetworkInterface a

    System.Net.NetworkInformation nvtrben tallhat.

    bool IsNetwork = NetworkInterface.GetIsNetworkAvailable();txtIsNetwork.Text = IsNetwork.ToString();

    Tulajdonkppen csak azt mondja meg, hogy van-e hlzat vagy sem, arrl, hogy a hlzat

    milyen, mr tovbbi informcikat nem ad. Azt se tudjuk meg, ha vltozs trtnik. Ahhoz,

    hogy figyeljk, hogy trtnt-e vltozs, a NetworkChange NetworkAddressChanged

    esemnyre kell feliratkoznunk:

    public MainPage(){InitializeComponent();

    NetworkChange.NetworkAddressChanged += newNetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);}

    void NetworkChange_NetworkAddressChanged(object sender, EventArgs e){

    bool IsNetwork = NetworkInterface.GetIsNetworkAvailable();txtIsNetwork.Text = IsNetwork.ToString();

    }

    A Windows Phone 7 els vltozatban nem sok informci llt a hlzatrl rendelkezsnkre,

    ez viszont vltozott a Mango frisstssel. Immr van egy

    Microsoft.Phone.Net.NetworkInformation nvtr, azon bell pedig kt, informciban

    igencsak gazdag osztly: az egyik a DeviceNetworkInformation, a msik pedig a mr emltett

    NetworkInterface. Ezek az osztlyok lehetv teszik, hogy megtudjuk, az eszkz

    csatlakoztatva van-e a hlzathoz, s ha igen, mi a kapcsolat tpusa. Ez az informci nagyon

    hasznos lehet, amikor olyan alkalmazst ksztnk, amihez aktv hlzati kapcsolat szksges,

    vagy jelents mennyisg adatot kell letltennk Wi-Fi-n vagy cellulris hlzaton keresztl.

    Oldjuk fel a Microsoft.Phone.Net.NetworkInformation nvteret (ha hozzadtuk a

    System.Net.NetworkInformation nvteret, most clszer eltvoltani)a kvetkez kddal:

    using Microsoft.Phone.Net.NetworkInformation;

    Ezt kveten krdezznk nhny alapvet informcit a kszlkrl:

    bool IsConnected = DeviceNetworkInformation.IsNetworkAvailable;bool IsCellularDataEnabled =DeviceNetworkInformation.IsCellularDataEnabled;bool IsCellularDataRoamingEnabled =DeviceNetworkInformation.IsCellularDataRoamingEnabled;bool IsWifiEnabled = DeviceNetworkInformation.IsWiFiEnabled;

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    18/102

    18 | O l d a l

    Lekrdezzk, hogy van-e hlzatunk (csakgy, mint a fentebbi esetben, csak itt a

    DeviceNetworkInformation-t hasznljuk fel erre a clra), ezenkvl lekrdezzk, hogy a mobil

    adatforgalom engedlyezve van-e mind itthon, mind klfldn, ugyanis lehetsgnk van

    pldul arra, hogy klfldn ne engedlyezzk az alkalmazs szmra, hogy neten keresztl

    kommunikljon. Az IsWiFiEnabled del megtudhatjuk, hogy a Wi-Fi engedlyezve van-e.

    Lekrdezhetjk a hlzat nevt is, amihez csatlakozunk, azaz, hogy Vodafone, T-Mobile,

    Telenor stb.

    string MobileOperator = DeviceNetworkInformation.CellularMobileOperator;

    Ami fontosabb, hogy most mr a kapcsolatunk tpust is lekrdezhetjk. Ehhez most kln

    metdust runk a felhasznlbart megjelentsrt:

    string ConnectionType =

    GetInterfaceTypeString(NetworkInterface.NetworkInterfaceType);

    A metdus picit hossz, mert a NetworkInterfaceType-nak elg sok vltozata ltezik:

    privatestring GetInterfaceTypeString(NetworkInterfaceTypenetworkInterfaceType){

    switch (networkInterfaceType){

    caseNetworkInterfaceType.AsymmetricDsl:return"Asymmetric DSL";

    caseNetworkInterfaceType.Atm:

    return"Atm";caseNetworkInterfaceType.BasicIsdn:

    return"Basic ISDN";caseNetworkInterfaceType.Ethernet:

    return"Ethernet";caseNetworkInterfaceType.Ethernet3Megabit:

    return"3 Mbit Ethernet";caseNetworkInterfaceType.FastEthernetFx:

    return"Fast Ethernet";caseNetworkInterfaceType.FastEthernetT:

    return"Fast Ethernet";

    caseNetworkInterfaceType.Fddi:return"FDDI";caseNetworkInterfaceType.GenericModem:

    return"Generic Modem";caseNetworkInterfaceType.GigabitEthernet:

    return"Gigabit Ethernet";caseNetworkInterfaceType.HighPerformanceSerialBus:

    return"High Performance Serial Bus";caseNetworkInterfaceType.IPOverAtm:

    return"IP Over Atm";caseNetworkInterfaceType.Isdn:

    return"ISDN";

    caseNetworkInterfaceType.Loopback:return"Loopback";

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    19/102

    19 | O l d a l

    caseNetworkInterfaceType.MobileBroadbandCdma:return"CDMA Broadband Connection";

    caseNetworkInterfaceType.MobileBroadbandGsm:return"GSM Broadband Connection";

    caseNetworkInterfaceType.MultiRateSymmetricDsl:return"Multi-Rate Symmetrical DSL";

    caseNetworkInterfaceType.None:return"None";

    caseNetworkInterfaceType.Ppp:return"PPP";

    caseNetworkInterfaceType.PrimaryIsdn:return"Primary ISDN";

    caseNetworkInterfaceType.RateAdaptDsl:return"Rate Adapt DSL";

    caseNetworkInterfaceType.Slip:return"Slip";

    caseNetworkInterfaceType.SymmetricDsl:

    return"Symmetric DSL";caseNetworkInterfaceType.TokenRing:

    return"Token Ring";caseNetworkInterfaceType.Tunnel:

    return"Tunnel";caseNetworkInterfaceType.Unknown:

    return"Unknown";caseNetworkInterfaceType.VeryHighSpeedDsl:

    return"Very High Speed DSL";caseNetworkInterfaceType.Wireless80211:

    return"Wireless";default:

    return"Unknown";}

    }

    Lthat, hogy hlzati s kapcsolati informcikat a Mango frisststl nagyon egyszeren

    lekrdezhetnk. Ezzel egytt az is elmondhat, hogy a System.Net.NetworkInformation ilyen

    tren elavult, s mr sokkal clszerbb a hlzati informcik meghatrozsra a

    Microsoft.Phone.Net.NetworkInformation nvteret hasznlni.

    MSDN Cikk

    http://msdn.microsoft.com/en-us/library/hh203231(v=vs.92).aspxhttp://msdn.microsoft.com/en-us/library/hh203231(v=vs.92).aspxhttp://msdn.microsoft.com/en-us/library/hh203231(v=vs.92).aspx
  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    20/102

    20 | O l d a l

    NavigciA Windows Phone 7 esetben Page-based (lap alap) navigci modellrl beszlnk.

    Hasonl a modell, mint a HTML-nl. Minden oldal

    egy egyedi URI cmmel rendelkezik, s ugyangy

    minden oldal llapotmentes! Amikor teht egy msik

    oldalra naviglunk az adott oldalbl, egy j pldny jn ltre. Na de nzzk meg ezt egy l

    pldn keresztl!

    1. Hozzunk ltre egy j Windows Phone 7 projektet!2. Adjunk hozz egy j oldalt: Add -> New Item -> Windows Phone

    Portrait Page! Az oldal neve legyen Second.xaml! Ezt az oldalt

    mdostsuk tetszsnk szerint. rjuk t a PageTitle-t Secondary-restb! Csak hogy lssuk, hogy ez egy msik oldal.

    3. Trjnk vissza a MainPage-re, s dobjunk fel a felhasznlifelletre egy gombot! A gomb neve legyen btnNavigation, a

    felirata pedig a Navigci!

    4. Kattintsunk ktszer a gombra, ezzel betltjk a gomb alaprtelmezettesemnyvezrljt. A btnNav klikk esemnynek trzsbe rjuk a kvetkezt:

    privatevoid btnNav_Click(object sender, RoutedEventArgs e){NavigationService.Navigate(newUri("/Second.xaml",UriKind.RelativeOrAbsolute));}

    5. Indtsuk el az alkalmazst, s prbljuk ki!Ebben az esetben a NavigationService Navigate metdust hvtuk meg. Ennek egy URI

    objektumot kell megadnunk: a Second.xaml a msik oldal neve. Arra figyeljnk oda, hogy ha

    mappba van rendezve az oldal, akkor az tvonalban szerepelni kell a mappa nevnek is, ahol

    keresheti!

    Tovbbi informcikat a Windows Phone fejleszts lpsrl lpsre knyv harmadik

    fejezetben olvashat.

    MSDN Cikk

    https://devportal.hu/wp7/konyvhttps://devportal.hu/wp7/konyvhttp://msdn.microsoft.com/en-us/library/ff941091(v=vs.92).aspxhttp://msdn.microsoft.com/en-us/library/ff941091(v=vs.92).aspxhttp://msdn.microsoft.com/en-us/library/ff941091(v=vs.92).aspxhttps://devportal.hu/wp7/konyv
  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    21/102

    21 | O l d a l

    Navigci Paramter tadsaJogosan merlhet fel a krds, hogy ha Page-based navigcis modellt

    hasznl a Windows Phone, akkor hogy adhatunk t paramtereket egyik

    oldalrl a msiknak. Egyfell van egy query sztringes megolds is,

    ugyanolyan, mint a honlapok esetn. Ez az knny megadsi mdszer,

    egyszerbb esetekben clszer ezt hasznlni.A menete a kvetkez:

    1. Hozzunk ltre egy j Windows Phone 7 alkalmazst!2. Adjunk hozz egy j oldalt: Add -> New Item -> Windows Phone

    Portrait Page! Az oldal neve legyen Second.xaml!

    3. Trjnk vissza a MainPage-re, majd a MainPage-re dobjunk fel egyTextBoxot s egy gombot! A Textbox neve legyen txtName, a Text tulajdonsga pedig

    res legyen! A gomb neve legyen a btnLogin, a Content tuldjosga pedig

    Bejelentkezs!

    4. Kattintsunk a Bejelentkezs gombra ktszer s az esemny trzsbe rjuk a kvetkezt:privatevoid btnLogin_Click(object sender, RoutedEventArgs e){NavigationService.Navigate(newUri("/Second.xaml?username="+ txtName.Text,UriKind.Relative));

    }

    Lthat, hogy a paramtert az URI-ban adjuk t. Megadjuk a kulcsot, ami a krdjel

    utni szveg, majd az egyenlsgjel utn hozzfzzk a txtName tartalmt.

    5. Ez eddig egyszer, viszont a fogad oldalt is fel kell ksztennk arra, hogy ezt aparamtert fogadja. Navigljunk el a Second.xaml.cs llomnyhoz, majd definiljuk

    fell az OnNavigatedTo metdust!

    protectedoverridevoidOnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)

    {base.OnNavigatedTo(e);string userName = "";if (NavigationContext.QueryString.TryGetValue("username", out

    userName)){

    PageTitle.Text = userName;}

    }

    Ahhoz, hogy kinyerjk a paramter rtkt, a NavigationContext.QueryString.TryGetValue

    metdust hasznltuk. Indexer segtsgvel is lehetsges, de a TryGetValue az egyiklegbiztonsgosabb mdja annak, hogy a paramter rtkt kinyerjk . Az els paramtere a

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    22/102

    22 | O l d a l

    kulcs, amit a navigcinl megadtunk. Fontos, hogy ez megegyezzen az eredeti kulccsal! Ha

    elrs trtnik, nem kapja meg az rtkt a userName sztring,

    ami egy out paramter. A TryGetValue egy boolen rtkkel tr

    vissza. Ha sikerlt rtket kivennie, akkor az rtke true, azaz

    az elgazsban lefutnak a kdok. Jelen esetben a PageTitleszvege az lesz, amit a paramterben tadtunk.

    Lthatjuk, hogy paramtert tadni nem bonyolult, viszont mi van akkor, ha komplex

    objektumot, esetleg listkat kellene tadnunk? Akkor ez a megolds egyfell knyelmetlen,

    msfell tl komplex s krlmnyes lehet. Ennek kikszblsre a ksbbiekben lthatjuk

    azt is, hogy lehet komplex objektumot tadni.

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    23/102

    23 | O l d a l

    Navigci Objektum tadsaGyakori eset, hogy nemcsak egy egyszer szveget szeretnnk paramternek tadni, hanem

    valamilyen sszetett objektumot. Megolds termszetesen erre is van. Ilyenkor a kvetkezt

    tehetjk:

    Megnyitjuk az App.xaml.cs llomnyt, s ltrehozunk egy egyszer tulajdonsgot (a

    tulajdonsg tpusa tetszlegesen komplex lehet), ebben a pldban ez egy szn lesz.

    publicColor MyFavColor { get; set; }

    Ha ezt a tulajdonsgot vltoztatni szeretnnk egy oldalrl, akkor azt a kvetkezkppen

    tehetjk meg:

    (Application.Current asApp).MyFavColor = Colors.Red;Ha csak az rtkt szeretnnk lekrdezni:

    Color myColor = (Application.Current asApp).MyFavColor;

    sszetettebb objektumok tadsa esetn clszer ezt a mdszert hasznlni, mint indexek

    tadst a msik oldalnak.

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    24/102

    24 | O l d a l

    Back buttonMinden Windows Phone 7 kszlk 3 fizikai gombbal rendelkezik: a

    vissza (Back), a Start (Windows) s a keress (Search) gombbal.

    Navigci sorn gyakran hasznljuk a vissza gombot, de ennek a

    funkcionalitst akr kdbl is megtehetjk. Ehhez a

    NavigationService GoBack metdust hasznlhatjuk fel.

    privatevoid btnBack_Click(object sender, RoutedEventArgs e){

    NavigationService.GoBack();}

    Arra is van lehetsgnk, hogy az alkalmazsunkban figyeljk, hogy a felhasznl a Back

    gombra nyomott-e. Ehhez fel kell iratkoznunk a PhoneApplicationPage BackKeyPressedesemnyre (XAML-ben vagy C# kdbl):

    Az esemnykezelben ilyenkor sajt logikt helyezhetnk el. Megtehetjk, hogy a Back gomb

    rvnyessgt vesztse. Pldul: Az alkalmazsunkban lehet vsrolni, s egy varzsl

    segtsgvel oldalrl oldalra lpegetnk, majd ha megtrtnt a vsrls, nem szeretnnk

    engedlyezni a felhasznlnak, hogy visszafel haladjon, a vsrls lpseit mg egyszer

    vgigjrva (mg egyszer fizessen ugyanazrt a termkrt, stb). Ilyenkor a CancelEventArge

    Cancel tulajdonsgt true-ra kell lltani. Ezzel megakadlyoztuk a vissza gomb valdi

    hasznlatt (ms egyedi funkcit is illeszthetnk r).

    privatevoid PhoneApplicationPage_BackKeyPress(object sender,System.ComponentModel.CancelEventArgs e){

    e.Cancel = true;}

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    25/102

    25 | O l d a l

    Telefonhvs indtsaEbben a fejezetben Task-okkal s Chooser-ekkel fogunk foglalkozni. Tulajdonkppen

    mindegyik hasznlata egy kaptafra megy, legfeljebb a tulajdonsgok nevei lesznek

    jdonsgok egy-egy pldnl. Kezdjk pldnkat a telefonhvs indtsval!

    Lehetsgnk van arra, hogy sajt alkalmazsunkbl telefonhvst kezdemnyezznk,

    mgpedig a Microsoft.Phone.Tasks nvtr PhoneCallTask osztllyal.

    1. Ksztsnk egy j Windows Phone 7 alkalmazst!2. A felhasznli felletre dobjunk fel egy HyperLinkButton-t, melynek a neve legyen

    hlbCall, a Content tuljadonsgnak most egy vals telefonszmot, a +36702823468

    at adjuk meg!

    3. Kattintsunk ktszer a hyperlinkbutton-ra, s az esemny vezrljbe rjuk a kvetkezt:PhoneCallTask phoneCall = newPhoneCallTask();phoneCall.PhoneNumber = hyperlinkButton1.Content.ToString();phoneCall.DisplayName = "Livesoft Kft.";phoneCall.Show();

    4. Ne feledjk feloldani a Microsoft.Phone.Tasks nvteret!A telefonhvs indtshoz ktelez megadnunk a hvand telefonszmot. Ezt a

    PhoneNumber tulajdongnl tesszk meg. Opcionlisan megadhatunk egy megjelentendnevet (Display Name tulajdonsg).

    A Show() metdus elindtja a task-ot, ami elszr lehetsget ad a felhasznlnak a hvs

    elindtsra vagy elutastsra. A hvs lebonyoltsa a megszokott felleten trtnik, a

    kihangostsi, nmtsi lehetsgekkel, majd a hvst sszegz zenetet lthatjuk.

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    26/102

    26 | O l d a l

    SMS-kldsLehetsgnk van SMS-t kldeni a WP7-es alkalmazsunkbl,

    ehhez is egy Lunchert tudunk felhasznlni. A kvetkez pldban

    egy olyan alkalmazst fogunk elkszteni, ami a Budapesti SMS-

    parkolst knnyti meg.

    1. Ksztsnk egy j Windows Phone 7 alkalmazst!2. Dobjunk fel egy Textblock-ot a felletre, melynek neve

    txtPreNum, a Text tulajdonsga a 0670810, a FontSize 42 az InputScope pedig

    number legyen! (Ezzel a telefonszm eltaggalkezddnek a budapesti parkol SMS

    kzpontok telefonszmai. Most nem figyelnk arra, hogy 20-as 30-as vagy 70-es a

    telefonszm. Kln feladatban belltsknt megadhat, vagy lekrdezhet a jelenleghasznlt hlzat alapjn.)

    3. A Textblock mell dobjunk fel egy textbox-ot, melynek neve txtPostNum legyen, aText tulajdonsga pedig res!

    4. Al dobjunk fel egy textblock-ot, melynek text tulajdonsga legyen a Rendszm:!5. Mell helyezznk el egy TextBox-ot, melynek neve a txtPNumber, a Text tulajdonsga

    pedig res!

    6. Vgl egy button-t is dobjunk fel a felhasznli felletre, melynek neve btnSend, aContent tulajdonsga pedig Klds legyen!

    7. Az alkalmazsunk lelke a klds gomb esemnyvezrljben lesz. Kattintsunk ktszera klds gombra, ezzel feliratkozunk a gomb klikk esemnyre.

    8. Oldjuk fel a Microsoft.Phone.Tasks nvteret:using Microsoft.Phone.Tasks;

    9.

    A btnSend trzsbe pedig rjuk a kvetkezt:privatevoid btnSend_Click(object sender, RoutedEventArgs e){

    SmsComposeTask smsTask = newSmsComposeTask(){

    To = txtPreNum.Text + txtPostNum.Text,Body = txtPNumber.Text

    };smsTask.Show();

    }

    A kdban nem ellenriztk, hogy az adatok, amiket a felhasznl megadott, helyesek-e smegfelel formtumban vannak-e, ezrt ez most nll feladat.

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    27/102

    27 | O l d a l

    Ha elindtjuk az alkalmazst, majd kitltve a helyes adatainkkal a klds

    gombra nyomunk, akkor felugik a Windows Phone 7-bl jl ismert

    SMS-klds ablak. A felhasznlnak manulisan el kell kldeni az

    zenetet! Programkdbl mi ezt nem tehetjk meg (rtelemszeren,

    hogy rosszindulat vagy helytelen mkds esetn ne generlhassunkplusz kltsget a felhasznlnak).

    Arrl nem kapunk rtestst, hogy a felhasznl valban elkldte-e az

    zenetet. Ha el is kldjk, az alkalmazs nem vlt vissza, hanem ott

    maradunk az SMS-kld ablakban. Csak a Back (

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    28/102

    28 | O l d a l

    E-mail kldseAhhoz, hogy az alkalmazsunkbl levelet kldjnk, az

    EmailComposeTask-ot kell hasznlnunk. Viszont figyeljnk arra, hogy

    ez a mvelet emultorbl nem fog mkdni, ugyanis ahhoz, hogy

    zenetet kldjnk, egy belltott e-mail fikkal kell rendelkeznnk, az

    emultor pedig cskkentett funkcionalitssal rendelkezik, s alapbl ezt nem tehetjk meg.

    Ha megprblnnk zenetet kldeni, akkor a fenti hibazenetet kapnnk.

    gy teht ezt a funkcit csak telefonra teleptve tudjuk majd kiprblni.

    A kvetkez feladatban egy support zenetkld oldalt ksztnk el. A clja az lesz, hogy a

    felhasznl elmondja, mi a problmja, vagy pp mennyire j az alkalmazsunk. Ezt az

    zenetet elkldi szmunkra e-mailben.

    1. Ksztsnk egy j Windows Phone 7 alkalmazst!2. A felhasznl fellet LayoutRoot grid-jnek bal fels

    sarkba dobjunk fel egy textblock-ot, amelynek a felirata

    legyen az zenet szveg!

    3. Al helyezznk el texbox-ot! Ennek adjunk egy viszonylagnagy mretet, s a Text tulajdonsgt trljk!

    4. A jobb als sarokba dobjunk fel mg egy gombot! A gombneve legyen a btnSend, a Content-je pedig a Klds felirat

    legyen!

    5. Kattintsunk ktszer a Klds gombra! Miutn a VisualStudio tvltott a kdnzetbe, oldjuk fel a Microsoft.Phone.Tasks nvteret:

    using Microsoft.Phone.Tasks;

    6. A btnSend esemny vezrljbe rjuk a kvetkezt:privatevoid btnSend_Click(object sender, RoutedEventArgs e){

    EmailComposeTask emailTask = newEmailComposeTask(){

    To = "[email protected]",Subject = "[SUPPORT]",Body = txtMsg.Text

    };emailTask.Show();

    }

    7. Kszen is vagyunk. Indtsuk el az alkalmazst s prbljuk ki!

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    29/102

    29 | O l d a l

    Web oldal betltseHa az alkalmazsunkban van pldul egy URL cm, amit meg szeretnnk jelenteni,

    megtehetjk vagy a WebBrowser vezrlvel, vagy ha ez szmunkra

    felesleges, akkor magt a telefonba beptett bngsz felletet is

    alkalmazhatjuk. A WebBrowserTask-ot hasznlhatjuk fel erre a clra:

    1. Hozzunk ltre egy j Windows Phone 7 alkalmazst!2. Helyezznk el a felletn egy HyperLinkButton-t, melynek

    Content-je legyen pldul a http://devportal.hu, a neve

    pedig hlbLink!

    3. Kattintsunk ktszer a hyperlinkbutton-ra, s miutn tvltotta Visual Studio kdnzetbe, oldjuk fel a

    Microsoft.Phone.Task nvteret:

    using Microsoft.Phone.Tasks;

    4. Ezt kveten az esemny trzsbe rjuk a kvetkez kdsorokat:privatevoid hlbLink_Click(object sender, RoutedEventArgs e){

    WebBrowserTask webTask = newWebBrowserTask();webTask.Uri = newUri(hlbLink.Content.ToString(), UriKind.Absolute);

    webTask.Show();}

    A WebTask-nak kt tulajdonsga van: az egyik az URI, a msik az URL. rte lemszeren itt kell

    megadni a webcmet, ahova a bngsz a ksbbiekben elnavigl. Azt viszont rdemes tudni,

    hogy az URL tulajdonsg mr elavult, gy ne hasznljuk!

    Ha elindtjuk az alkalmazst, s rkattintunk a HypetLinkButton-ra, akkor a kvetkezket

    tapasztalhatjuk: a bngsz els indtsakor engedlyt kr a bngszs adatainak

    felhasznlsra, a Bing keres tovbbfejlesztsnek rdekben. Vlasztsunkat kveten az

    oldal betltdik az Internet Explorer 9 mobilos vltozatba. A bngsz a Mango frisstsnekksznheten teljes HTML 5 tmogatssal rendelkezik, gy a generlt oldal teljesen

    megegyezik a szmtgpeken megszokottal. Nhny msodpercet kveten megjelenik a

    vrt eredmny.

    MSDN Cikk

    http://devportal.hu/http://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.webbrowsertask%28v=VS.92%29.aspxhttp://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.webbrowsertask%28v=VS.92%29.aspxhttp://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.webbrowsertask%28v=VS.92%29.aspxhttp://devportal.hu/
  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    30/102

    30 | O l d a l

    Mdiatartalom lejtszsaHa mdiatartalmakat szeretnnk lejtszani, akkor felhasznlhatjuk a kszlk

    mdialejtszjt. Mind az auditartalmat, mind a videtartalmat le tudjuk jtszani. A mdia

    forrsa lehet loklis, de akr tvoli is. Loklis mdiaforrs esetn az Isolated Storage-n trolt

    mdia fjl tvonalt kell megadnunk.

    A MediaPlayerLauncher hasznlata nagyon egyszer. Meg kell adnunk a mdiafjl tvonalt,

    majd meg kell hvnunk a Show metdust. Ha meg szeretnnk jelenteni a mediaplayer

    controlokat, akkor a Controls tulajdonsggal bellthatjuk, hogy mik jelenhetnek meg.

    Nzznk egy egyszer pldt:

    MediaPlayerLauncher mpLauncher = newMediaPlayerLauncher();

    mpLauncher.Location = MediaLocationType.Data;mpLauncher.Controls = MediaPlaybackControls.All;mpLauncher.Media = newUri(@"http://mschannel9.vo.msecnd.net/o9/mix/09/wmv/key01.wmv",

    UriKind.Absolute);mpLauncher.Show();

    Ha ezt a kdsort lefuttatjuk, mris indul a vide.

    MSDN Cikk

    http://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.mediaplayerlauncher(v=VS.92).aspxhttp://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.mediaplayerlauncher(v=VS.92).aspxhttp://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.mediaplayerlauncher(v=VS.92).aspx
  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    31/102

    31 | O l d a l

    Keress a webenLehetsgnk van arra, hogy a Windows Phone 7 alaprtelmezett keresjt (Bing) alkalmazva

    kereshessnk a weben. Ezt az alkalmazsunkbl is meghvhatjuk, ehhez a SearchTask osztlyt

    kell segtsgl hvni. sszesen egy tulajdonsga van, a SearchQuery, ennek kell megadnunk a

    keressi kifejezst, majd meg kell hvnunk a Show metdust.

    Lssuk kdbl is:

    SearchTask search = newSearchTask();search.SearchQuery = "Serj Tankian";search.Show();

    Az eredmny:

    MSDN Cikk

    http://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.searchtask(v=VS.92).aspxhttp://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.searchtask(v=VS.92).aspxhttp://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.searchtask(v=VS.92).aspx
  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    32/102

    32 | O l d a l

    Kamera hasznlataHa az alkalmazsunkbl kpet szeretnnk kszteni, a CameraCaptureTask-ot hvhatjuk

    segtsgl. Ilyenkor a Windows Phone 7 beptett s megszokott felhasznli fellete fogadja

    a felhasznlt. Elksztheti a fott, majd ha ksz, s az accept gombot is megnyomtuk,

    visszatrnk az alkalmazshoz, ahol aztn tovbbi fotmveletet is elvgezhetnk. Nzznk

    erre is egy egyszer s gyors pldt!

    1. Ksztsnk egy j Windows Phone 7 alkalmazs projektet!2. A felhasznli felltre elszr dobjunk fel egy gombot, a gomb neve legyen btnPhoto,

    a Content tulajdonsga pedig legyen a Fot ksztse szveg (nveljk meg a

    mrett a gombnak, hogy a szveg elfrjen)!

    3. A gomb al helyezznk el mg egy image-vezrlt is, melynek mrete tltse ki minlinkbb a rendelkezsre ll felhasznli felletet! Az image-vezrl neve legyen az

    imgPhoto!

    4. Kattintsunk ktszer a btnPhoto gombra! Miutn tvltott a Visual Studio kdnzetbe,oldjuk fel a kvetkez kt nvteret:

    using Microsoft.Phone.Tasks;using System.Windows.Media.Imaging;

    5. A btnPhoto klikk esemnyt az elzekben mr ltrehoztuk. Az esemny trzsbenpldnyostsuk a CameraCaptureTask osztlyt! Iratkozzunk fel a Completed

    esemnyre, majd hvjuk meg a Show metdust. A Completed esemny akkor

    kvetkezik be, ha sikerlt a fot elksztse, s a felhasznl elfogadta azt.

    privatevoid btnPhoto_Click(object sender, RoutedEventArgs e){

    CameraCaptureTask camTask = newCameraCaptureTask();camTask.Completed += newEventHandler(camTask_Completed);camTask.Show();

    }

    6. A Completed esemnyre ugyan feliratkoztunk, de mg nem rtuk meg Completedtrzst. Itt megvizsgljuk, hogy a TaskResult az OK-e, azaz a felhasznl valban

    ksztett-e kpet s elfogadta-e azt. Ha ez gy van, akkor ksztnk egy BitmapImage

    objektumot, s a SetSource metdusban tadjuk a fot Streamjt (ChoosenPhoto).

    Utols lpsknt az Image kontrol Source tulajdonsgnak tadjuk ezt a

    bitmapImage-t, ami pedig megjelenti.

    void camTask_Completed(object sender, PhotoResult e){

    if (e.TaskResult == TaskResult.OK){

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    33/102

    33 | O l d a l

    BitmapImage bmp = newBitmapImage();bmp.SetSource(e.ChosenPhoto);imgPhoto.Source = bmp;

    }}

    7. Indtsuk el az alkalmazst, s prbljuk ki! Br fizikai kszlken a legidelisabbkiprblni, az emultor ad azrt alternatvt a kiprblsra. Az emultor esetn egy

    tglalap szik krbe a kijelzn, s azt fotzhatjuk le, majd jelenthetjk meg az image

    kontrolban.

    Br a Windows Phone 7 Mango frisststl van arra is lehetsg, hogy direkt mdon elrjka kamert, ha a feladat nem kveteli meg, akkor sokszor clszerbb inkbb a

    CameraCaptureTask-ot hasznlni, hisz ezt a felhasznl mr jl ismeri, s plusz

    funkcionalitssal is rendelkezik.

    MSDN Cikk

    http://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.cameracapturetask(v=VS.92).aspxhttp://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.cameracapturetask(v=VS.92).aspxhttp://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.cameracapturetask(v=VS.92).aspx
  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    34/102

    34 | O l d a l

    Photo Library elrseLehetsgnk van arra, hogy elrjk a telefonunk mdiaknyvtrt, s onnan vlasszunk

    fott, amit hasznlni szeretnnk (ez pldul egy fotmanipulcis alkalmazsnl

    elengedhetetlen), st, meghatrozhatjuk azt is, hogy milyen mret kpre van szksgnk,

    gy ha a felhasznl nem megfelel mret kpet adna t a szmunkra, akkor ktelezhetjk

    annak levgsra. Ezenkvl rdemes megemlteni, hogy a PhotoChooserTask-ot hasznlva

    akr kpet is kszthetnk. Mindjrt meg is nzzk, hogy hogyan.

    1. Ksztsnk egy j Windows Phone 7 alkalmazst!2. A felhasznli felltre elszr dobjunk fel egy gombot, a gomb neve legyen btnPhoto,

    a Content tulajdonsga pedig legyen a Kp kivlasztsa szveg (nveljk meg a

    mrett a gombnak, hogy a szveg elfrjen)!

    3. A gomb al helyezznk el mg egy image-vezrlt is, melynek mrete tltse ki minlinkbb a rendelkezsre ll felhasznli felletet! Az image-vezrl neve legyen az

    imgPhoto! A vezrl Width tulajdonsga legyen 450, a Height pedig 200!

    4. Kattintsunk ktszer a btnPhoto gombra. Miutn tvltott a Visual Studio kdnzetre,oldjuk fel a kvetkez kt nvteret:

    using Microsoft.Phone.Tasks;using System.Windows.Media.Imaging;

    5. A btnPhoto klikk esemnyt az elzekben mr ltrehoztuk. Az esemny trzsbenpldnyostsuk a PhotoChooserTask osztlyt! A ShowCamera tulajdonsg segtsgvel

    megadhatjuk, hogy kszthetnk-e fott a PhostoChosser-bl, a PixelWidth

    tulajdonsgt pedig lltsuk be 450-re, s a PixelHeight tulajdonsgot 200-ra! A

    Completed esemnyre iratkozzunk fel, majd hvjuk meg a Show metdust!

    PhotoChooserTask photoChooser = newPhotoChooserTask();photoChooser.ShowCamera = true;photoChooser.PixelWidth = 450;

    photoChooser.PixelHeight = 200;photoChooser.Completed += newEventHandler(photoChooser_Completed);photoChooser.Show();

    6. A Completed esemny trzst mg nem rtuk meg. Itt megvizsgljuk, hogy aTaskResult rendben van-e, azaz a felhasznl kivlasztott vagy ksztett-e kpet . Ha

    ez gy van, akkor ksztnk egy BitmapImage objektumot, s a SetSource metdusban

    tadjuk a fot Stream-jt (ChoosenPhoto). Utols lpsknt az Image kontrol Source

    tulajdonsgnak tadjuk ezt a bitmapImage-t, ami pedig megjelenti azt.

    void photoChooser_Completed(object sender, PhotoResult e){

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    35/102

    35 | O l d a l

    if (e.TaskResult == TaskResult.OK){

    BitmapImage bmp = newBitmapImage();bmp.SetSource(e.ChosenPhoto);impPhoto.Source = bmp;

    }}

    7. Indtsuk el az alkalmazst, s prbljuk ki, hogyan is mkdik!Nzzk meg az eredmnyt kpekben:

    MSDN Cikk

    http://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.photochoosertask(v=VS.92).aspxhttp://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.photochoosertask(v=VS.92).aspxhttp://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.photochoosertask(v=VS.92).aspx
  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    36/102

    36 | O l d a l

    Telefonszm mentseChooser segtsgvel lehetsgnk van arra, hogy egy adott

    telefonszmot az alkalmazsunkbl a kapcsolataink (Contacts) kz

    mentsnk. Termszetesen ehhez is a Microsoft.Phone.Tasks nvteret

    kell felhasznlnunk.

    using Microsoft.Phone.Tasks;

    A nvjegy mentshez a SavePhoneNumberTask-ot hvjuk segtsgl.

    Pldnyosts utn lthatjuk, hogy ennek az osztlynak rengeteg

    tulajdonsga van, amit kitlthetnk: nv, telefonszm, cg stb.

    Nhny informcit most megadunk, majd a completed esemnyre

    feliratkozunk, s legvgl meghvjuk a Show metdust.

    SaveContactTask sct = newSaveContactTask(){

    MobilePhone = "+36702823468",Company = "Livesoft Kft.",FirstName = "Attila",LastName="Turczy"

    };sct.Completed += newEventHandler(sct_Completed);sct.Show();

    Ezt kveten megrjuk a Completed esemny trzst. Itt a felhasznlnak rtestst kldnkannak fggvnyben, hogy sikerlt-e a nvjegy mentse vagy sem.

    void sct_Completed(object sender, SaveContactResult e){

    string msg = string.Empty;switch (e.TaskResult){

    caseTaskResult.Cancel:msg = "Nvjegy mentse megszaktva!";break;

    caseTaskResult.None:msg = "Nvjegy mentse NEM sikerlt!";break;

    caseTaskResult.OK:msg = "Nvjegy elmentve!";break;

    }MessageBox.Show(msg, "Kapcsolat mentse", MessageBoxButton.OK);

    }

    MSDN Cikk

    http://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.savecontacttask(v=VS.92).aspxhttp://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.savecontacttask(v=VS.92).aspxhttp://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.savecontacttask(v=VS.92).aspx
  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    37/102

    37 | O l d a l

    Telefonknyv Nvjegy kivlasztsaA PhoneNumberChooserTask ugyangy, mint az elbbi Chooser, szintn a Contacts

    alkalmazst nyitja meg, viszont ez mr adatot is szolgltat a hv alkalmazs szmra: a

    Completed esemnykezel msodik paramtere egy PhoneNumberResult tulajdonsg, amin

    keresztl elrhetjk a kivlasztott partner nevt s telefonszmt, viszont tovbbi

    informcikat ez a taszk mr nem szolgltat. Ha tovbbi informcikat szeretnnk lekrdezni,

    akkor ahhoz a Contacts osztlyt kell segtsgl hvnunk, ugyanis a Contacts osztly

    segtsgvel a telefonon trolt sszes nvjegyhez hozzfrhetnk.

    Nzznk erre egy rvid pldt:

    PhoneNumberChooserTask phoneNumberChooser = newPhoneNumberChooserTask();phoneNumberChooser.Completed += (s, result) =>

    {if (result.Error == null && result.TaskResult == TaskResult.OK){

    string name = result.DisplayName;string number = result.PhoneNumber;MessageBox.Show(string.Format("Nv: {0}\nTelefonszm:{1}",

    name, number));}

    };phoneNumberChooser.Show();

    Az eredmny:

    MSDN Cikk

    http://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.phonenumberchoosertask(v=vs.92).aspxhttp://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.phonenumberchoosertask(v=vs.92).aspxhttp://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.phonenumberchoosertask(v=vs.92).aspx
  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    38/102

    38 | O l d a l

    Figyelmeztetsek s riasztsokA Windows Phone 7 Mango frisststl lehetsgnk van sajt riasztsok s emlkeztetk

    ksztsre. A riasztsok aktivlshoz nem kell folyamatosan hasznlni az alkalmazst,

    lezrhatjuk nyugodtan, hisz a riasztst a telefon temezje fogja elvgezni

    (ScheduledActionService).

    Nzznk egy rvid pldt arra, hogyan tudunk j figyelmeztetst kszteni!

    Ebben a nhny kdsorban egy autplya-matrica lejrst figyel alkalmazst szimullunk.

    Szksgnk lesz a Microsoft.Phone.Scheduler nvtrre:

    using Microsoft.Phone.Scheduler;

    j figyelmeztets hozzadsa:Alarm alarm = newAlarm("Autopalya");alarm.Content = "Lejrt az autplya-matricjnak az rvnyessge!";alarm.BeginTime = DateTime.Now.AddMinutes(1); ;alarm.Sound = newUri("Springsteen.mp3", UriKind.Relative);

    ScheduledActionService.Add(alarm);

    Pldnyostjuk az Alarm osztlyt, amelynek tadunk egy nevet, de arra figyeljnk oda, hogy

    ennek a nvnek egyedinek kell lennie! A Content tulajdonsgnl megadunk egy zenetet,

    amit majd a figyelmeztetsben megjelentnk. A BeginTime-nl megadhatjuk, hogy afigyelmeztets mikor induljon. (Most nem tl vals a plda, hisz 1 perc alatt jr le az

    autplya-matricnk rvnyessge.) rdekessgknt rdemes megemlteni a Sound

    tulajdonsgot, ahol akr sajt zent / hangot is megadhatunk. Fontos megjegyezni, hogy

    ennek az mp3 fjlnak az alkalmazs mellett kell szerepelnie (Content)! Sajnos a Zune

    mdiaknyvtrbl nem adhatunk meg audi fjlt.

    Ha lejrt az id, akkor az albbi zenet fog minket fogadni, s elindul az mp3 fjl is, amit

    korbban megadtunk.

    Ha valamilyen oknl fogva el szeretnnk tvoltani a figyelmeztetst, akkor azt a

    ScheduledActionService.Remove metdusval tudjuk megtenni. A metdusnak meg kelladnunk a figyelmeztets egyedi azonostjt (Name):

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    39/102

    39 | O l d a l

    ScheduledActionService.Remove("Autopalya");

    Termszetesen van arra is lehetsg, hogy keressnk az temezsek kztt:

    var reminder = ScheduledActionService.Find("Autopalya");if (reminder != null && reminder.IsScheduled == false)

    {

    }

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    40/102

    40 | O l d a l

    GPS Koordintk lekrdezseMinden Windows Phone 7 kszlk rendelkezik GPS szenzorral, gy sajt alkalmazsunkbl

    lekrdezhetjk a jelenlegi pozcinkat is. J tudni, hogy amikor helymeghatrozst szeretnnk

    hasznlni, elszr a cella s a wifi informcikat hasznlva fel pozicionl minket, ugyanis ez

    gyorsabb s energiatakarkosabb, mint a GPS hasznlata, viszont sokkal pontatlanabb.

    Nzznk egy egyszer pldt, hogyan rhetjk el az alkalmazsunkbl a GPS informcikat!

    1. Ksztsnk egy j Windows Phone 7 alkalmazst!2. Dobjunk fel a felhasznli felletre 6 db TextBlock-ot, a nevei sorban legyenek a

    kvetkezk: tbLat, tbLong, tbHorAccu, tbVerAccu, tbTimeStamp, tbSpeed, a Text

    tulajdonsga pedig legyen egy (ktjel)! Az elrendezsk nem lnyeges.

    3. A projektnknek szksge lesz a System.Device.dll-re.Kattintsunk a Solution Explorer-ben a References-re jobb

    egrgombbal, majd vlasszuk ki az Add Reference menpontot!

    A megjelen ablakban vlasszuk ki a .NET flet , majd keressk ki a System.Device-t,

    vlasszuk ki, majd kattintsunk az OK gombra!

    4. Nyissuk meg a MainPage.xaml.cs fjlt, s oldjuk fel aSystem.Device.Location nvteret:

    using System.Device.Location;

    5. Most, az egyszersg kedvrt, a konstruktorban hozzunk ltreegy GeoCoordinteWatcher pldnyt, aminek a pontossgt most

    lltsuk High-ra! Ezt kveten feliratkozunk a PositionChanged

    esemnyre, hogy rtesljnk, hogy trtnt-e a pozciban

    valamilyen vltozs, valamint legvgl meghvjuk a Start

    metdust, s ezzel elindul a GPS szenzor (stop metdussal

    lelltjuk).

    public MainPage(){

    InitializeComponent();GeoCoordinateWatcher gcw = new

    GeoCoordinateWatcher(GeoPositionAccuracy.High);gcw.PositionChanged += new

    EventHandler(gcw_PositionChanged);

    gcw.Start();}

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    41/102

    41 | O l d a l

    6. Egy dolog maradt htra: meg kell rnunk a PositionChanged esemny trzst. Mivelmost nem hasznltunk fel trkpet, gy csak kiratjuk a jelenlegi adatokat egy-egy

    textblock-ba.

    void gcw_PositionChanged(object sender,

    GeoPositionChangedEventArgs e){tbLat.Text = e.Position.Location.Latitude.ToString();tbLong.Text = e.Position.Location.Longitude.ToString();tbHorAccu.Text = e.Position.Location.HorizontalAccuracy.ToString() + " m";tbVerAccu.Text = e.Position.Location.VerticalAccuracy.ToString() + " m";tbTimeStamp.Text = e.Position.Timestamp.DateTime.ToLongDateString();tbSpeed.Text = e.Position.Location.Speed.ToString(); ;

    }

    7. Ezzel tulajdonkppen ksz is vagyunk. Indtsuk el az alkalmazst! A helymeghatrozsthasznl alkalmazsokat clszer fizikai kszlkeken tesztelni, de ha ppen nincskznl egy, a 7.1-es SDK-tl erre is van lehetsgnk emultorbl.

    8. Miutn elindult az alkalmazs, kattintsunk az emultor mellett tallhat toolbar-on adupla nylra, s az Additional Tools ablak location fln helyezznk el pontokat! Majd

    ha megvan, kattintsunk a play gombra, s mris szimullva van a koordintk

    vltozsa.

    Lthat, hogy a GPS szenzor kezelse nagyon egyszer, s ha nincs fizikai kszlknk , most

    mr kiprblhat emultorbl is.

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    42/102

    42 | O l d a l

    BingMaps vezrl hasznlataAhhoz, hogy a BingMaps szolgltatst hasznljuk, szksgnk lesz egy ApplicationKey-re. Ezt

    brki ingyenesen krhet aBingMaps Portlon(a felhasznli feltteleket felttlenl olvassuk

    el!).

    A BingMaps kontrol hasznlata rendkvl egyszer. Nzznk is egy gyors pldt!

    1. Ksztsnk egy j Windows Phone 7 alkalmazst!2. A Layoutroot elrendezs vezrlre dobjunk fel egy Map-

    vezrlt a toolbox-rl! Ezt clszer a toolbox-rl feldobni,

    ugyanis ilyenkor automatikusan behzza a

    Microsoft.Phone.Controls.Maps nvteret is. XAML-ben

    valahogy gy nz ki:

    3. Ugyan elkezdhetjk hasznlni a vezrlt, de Bingmaps vezrln megjelenik egyfigyelmeztets, hogy nem megfelelek a hitelest adatok (Invalid Credentials). A

    Bingmaps portlrl krt application key-t adjuk meg a szmra, ezt a

    CredentialsProvider tulajdonsgnl tehetjk meg.

    Ha ezt megtettk, mr jogszeren hasznlhatjuk a Bing

    Maps vezrlt, s a figyelmeztets is eltnik.

    4. Most mg csak a Bing Maps jelenik meg. Azt, hogy holjelenjen meg, a Center tulajdonsg megadsval

    hatrozhatjuk meg. Ez egy GeoCordinate tpus

    tulajdonsg. A pozci ugyan megvan, de azt is meg kell

    hatroznunk, hogy mennyire legyen rkzeltve az adott

    pontra. A kvetkez XAML lers egy Budapestbelvrosban lv pontot fog megjelenteni.

    5. Ha emultoron teszteljk az alkalmazst, clszer megjelenteni a ZoomBar-t. Ezt aZoomBarVisibility tulajdonsggal tehetjk meg.

    ZoomBarVisibility="Visible"

    https://www.bingmapsportal.com/https://www.bingmapsportal.com/https://www.bingmapsportal.com/https://www.bingmapsportal.com/
  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    43/102

    43 | O l d a l

    6. Magt a trkpet kt klnbz mdban hasznlhatjuk:RoadMode s ArialMode. Utbbi a mholdkp-vltozat, elbbi

    az alaprtelmezett trkpnzet. Hogy melyik mdon jelenjen

    meg a trkp, azt a Mode tulajdonsggal tudjuk befolysolni.

    C# kdbl:

    using Microsoft.Phone.Controls.Maps;map1.Mode = newAerialMode();

    XAML-bl:

    7. Mg kt tulajdonsgot rdemes ismerni: az egyik a LogoVisibility, a msik aCopyRightVisibility. Az elbbivel a Bing logt tntethetjk el a bal sarokbl, mg az

    utbbival a CopyRight informcikat a jobb sarokbl. Ezt ltalban meg is szoktuk

    tenni. Plusz informcit a vgfelhasznl szmra nem tl sokszor hordoznak ezek az

    adatok.

    CopyrightVisibility="Collapsed"LogoVisibility="Collapsed"

    nll feladat: krdezzk le a jelenlegi GPS koordintnkat, s a Bing Maps kzppontjnak

    adjuk meg! Ha mozgunk, a Bing Maps trkpnek a kzppontja is mdosuljon!

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    44/102

    44 | O l d a l

    BingMaps PushPinekPOI (Path Overhead Indicator) informcikat is elhelyezhetnk a BingMapson. Erre

    hasznlatosak a PushPinek. Nagyon egyszer a kezelsk, gyakorlatilag a pont koordintjt

    s a content-et kell megadnunk a szmra, s mris megjelenik a trkpen. Az elz

    feladatot folytatva a trkpet most kiegsztjk nhny pushpin-nel.

    Elszr nzzk meg, hogyan hogy lehet egy pushpin-t XAML-ben hozzadni.

    Ez nagyon egyszer, de legtbbszr a PushPin-eket dinamikusan C# kdbl szoktuk a

    trkphez adni. Ebben az esetben a Map-vezrl gyermek elemhez kell adnunk egy Pushpin

    pldnyt. A Pushpin-nek ugyangy a content s a Location tulajdonsgt kell megadni. A

    Location GeoCordinate tpus (System.Device.Location).

    map1.Children.Add(newPushpin(){Content = "Evosoft Hungary Kft",Location = new System.Device.Location.GeoCoordinate(47.4683, 019.0522)

    });

    Az eredmny ennek megfelelen egy trkp, ahol mind a kt POI megjelenik.

    Amit viszont szrevehetnk, hogy a POI-nak van egy alaprtelmezett megjelentse.

    Termszetesen ennek a sablonjt is megvltoztathatjuk (akr tma szinten is). Nzznk egy

    gyors pldt arra, hogyan vltoztathatjuk meg a PushPin kinzett. A bevsrlkzpont most

    egy Logo-t is kap:

    Lthat, hogy nagyon egyszerPOI pontokat a trkphez adnunk, st, ha

    testre akarjuk szabni, azt a mr megszokott egyszersggel megtehetjk.

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    45/102

    45 | O l d a l

    tvonaltervezsA trkpen kvl egyb hasznos szolgltatst is knl szmunkra a Microsoft, ezeket a

    funkcikat szabvnyos web szolgltatson keresztl rhetjk el.

    Geocode Service Cmek, nevezetes helyek, fldrajzi nevek keresse, koordintkk alaktsa

    vagy koordintk alapjn ezek kinyerse.

    http://dev.virtualearth.net/webservices/v1/geocodeservice/geocodeservice.svc

    Route Service tvonalak tervezse az ltalunk megadott kztes pontok kztt, azaz nem

    csupn kezd- s vgpontot adhatunk meg, hanem rintett pozcik egsz listjt. Ezen a

    listn a tervez algoritmus sorban vgigmegy, majd ezt a grfot bejr ponthalmazt ad vissza

    neknk. Lehetsgnk van az utazs mdjnak belltsra (gyalog / autval), valamint

    meghatrozhatjuk, hogy milyen szempontbl keressen optimlis eredmnyt (sebessg,

    tvolsg, st akr a forgalmi helyzettel val szmolst is krhetjk).

    http://dev.virtualearth.net/webservices/v1/routeservice/routeservice.svc

    Search Service Nevezetes helyek, pldul ttermek, mozik keresse ez pozcihoz is

    kthet.

    http://dev.virtualearth.net/webservices/v1/searchservice/searchservice.svc

    Nzznk az tvonaltervezsre egy pldt!

    1. Ksztsnk egy j Windows Phone 7 alkalmazst!2. A felhasznli felletre dobjunk fel egy gombot, a gomb neve legyen a btnRoute, a

    Content-je az tvonaltervezs legyen!

    3. A felhasznli felletre dobjunk fel egy Map vezrlt (ha feldobjuk a megfelelnvteret automatikusan betlti). llitsuk be a CredentialsProvider-nl az API key-

    nket, a Centert-t s a Zoom Level szintet! A Map-re dobjunk fel mg kt PushPin-t,

    ezenkvl lesz egy MapPolyLine is, ez fogja reprezentlni majd az tvonalat.

    A XAML a kvetkezkppen fog kinzni:

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    46/102

    46 | O l d a l

    Bevsrlkzpont" />

    4. Kattintsunk ktszer az tvonal tervezse gombra, ekkor betltdik a kdnzet.5. Kattintsunk a Solution Explorer-ben a References-re jobb egrgombbal, s vlasszuk

    ki az Add Service Reference menpontot!

    6. A megjelen ablakban adjuk meg az tvonaltervez szolgltats cmt, majdkattintsunk a Go gombra! Ebben a pillanatban megprblja megtallni a szolgltatst.A Namespace neve legyen pldul RouteSzolg!

    7. Oldjuk fel ennek a szolgltatsnak a nvtert, valamint tovbbi nvtereket is:using[PROJECTNEVE].RouteSzolg;using Microsoft.Phone.Controls.Maps;using System.Collections.ObjectModel;using System.Device.Location;

    8. Ksztsnk egy vltozt- a Credentials vltozt- s ehhez egy megfelel tulajdonsgot(Ezt a konstruktor el helyezzk most)!

    privateconststring apkiKey = "AnY59ktyRJ-7g-...";privatereadonlyCredentials cred = newCredentials{

    ApplicationId = apkiKey};

    9. A btnReoute klikk esemnynek trzsben elszr pldnyostjuk aRouteServiceClient-et:

    RouteServiceClient rc = newRouteServiceClient();

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    47/102

    47 | O l d a l

    10.Ahhoz, hogy tvonalat tervezznk, meg kell hvnunk a CalculateRoute metdust, amiegy RouteRequest pldnyt ignyel, ezt viszont fel kell paramtereznnk. A

    RouteServiceClient pldnyostsa utn pldnyostsuk a RouteOptions nevezet

    osztlyt. Itt meghatrozzuk, hogy a pontok listjt hogyan kapjuk vissza: az tvonal

    gyors legyen, vegye-e figyelembe a forgalmi adatokat, valamint hogy gyalog vagyautval tervezze az tvonalat. Ebben az esetben a kvetkezkppen pldnyostjuk a

    RouteOptions-t:

    RouteOptions options = newRouteOptions(){

    RoutePathType = RoutePathType.Points,Optimization = RouteOptimization.MinimizeTime,TrafficUsage = TrafficUsage.TrafficBasedTime,Mode = TravelMode.Driving

    };

    11.Most adjuk meg a kiindulsi s a vgpontot! Ez egy Waypoint lista lesz:ObservableCollection points = newObservableCollection(){

    newWaypoint{

    Location = newGeoCoordinate(47.4746, 019.0498)},newWaypoint{

    Location = newGeoCoordinate(47.4683, 019.0522)}

    };

    12. Most mr megvannak a kezd- s a vgpont, valamint az tvonaltervezsi belltsokis. Itt az ideje elkszteni a RouteRequest pldnyt. Ennek meg kell adnunk a

    RouteOptions-t, Waypoints gyjtemny (kezd- s vgpont), valamint a Credentials-t

    (Application Key):

    RouteRequest request = newRouteRequest(){

    Credentials = cred,Options = options,Waypoints = points

    };

    13.Nincs ms htra, mint meghvni a szolgltatst, s feliratkozni a Completedesemnyre. Elszr iratkozzunk fel a CalculateRouteCompleted esemnyre:

    rc.CalculateRouteCompleted += newEventHandler(rc_CalculateRouteCompleted);

    14.Ezt kveten hvjuk meg a szolgltatst, s adjuk t szmra a RouteRequestpldnyt!

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    48/102

    48 | O l d a l

    rc.CalculateRouteAsync(request);

    15.Most mr csak az eredmny kirajzolsa van htra. rjuk meg a Completed esemnytrzst:

    void rc_CalculateRouteCompleted(object sender,CalculateRouteCompletedEventArgs e){

    LocationCollection lCollection = newLocationCollection();foreach (var item in e.Result.Result.RoutePath.Points){

    lCollection.Add(item);}lRoute.Locations = lCollection;// pozcionljuk a trkpet az tvonalra!

    map1.SetView(e.Result.Result.Summary.BoundingRectangle);}

    16.Elkszlt az alkalmazsunk, indtsuk el, s prbljuk ki mkds kzben!17.Amikor elindul az alkalmazs, kt POI pontot ltunk a trkpen. Ha rkattintunk az

    tvonal tervezse gombra, akkor egy webszolgltats krst indtunk. Amint

    megrkezik a vlasz, megkapjuk az idelis tvonalat a kt pont kztt.

    Az eredmny kpekben:

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    49/102

    49 | O l d a l

    Gyorsulsmr hasznlataA Windows Phone 7-es kszlkkel lekrdezhetjk, hogy milyen irnyba hat a gyorsuls a

    telefonunkra (X, Y, Z koordintk mentn). Mint minden szenzor esetn, itt is fontos

    megvizsglnunk, hogy a kszlk tartalmazza-e az adott szenzort. Ezt az Accelerometer

    IsSupported statikus tulajdonsg lekrdezsvel tehetjk meg.

    A kvetkez feladatban egy olyan alkalmazst fogunk elkszteni, amely egy labdt fog

    megjelenteni a kijelzn. A labda gy s olyan gyorsan fog mozogni, mint amennyire a

    felhasznl a kszlket dnti.

    1. Ksztsnk egy j Windows Phone 7 alkalmazst!2. A Layoutroot grid-et trljk ki, s helyezznk el a felhasznli felletre egy canvas-t!

    A Canvas-be rajzoljunk egy ellipszist (100 x 100 px), ennek adjunk egy sznt (mi most

    RadialGradientBrusht adtunk meg):

    3. Ezt kveten a referencikhoz adjuk hozz a Microsoft.Devices.Sensors-t, s aMicrosoft.XNA.Framework assembly-t! Solution Explorer-ben klikkeljnk jobb

    egrgombbal, s a References-en a megjelen helyi menbl vlasszuk ki a

    Microsoft.Devices.Sensors-t,valamint a Microsoft.XNA.Framework assembly-t, s

    kattintsunk az OK gombra!

    4. Oldjuk fel a Microsoft.Devices.Sensor, s a Microsoft.XNA.Framework nvtereket:using Microsoft.Devices.Sensors;using Microsoft.Xna.Framework;

    5. A konstruktor eltt hozzunk ltre egy Accelometer-t, a pldnyostst majd csak akonstruktorban hozzuk ltre!

    Accelerometer acMeter = null;

    6. A konstruktorban ellenrizzk, hogy valban van-e ilyen szenzor, s ha van, akkorpldnyostsuk ezt az osztlyt, s iratkozzunk fel a CurrentValueChanged esemnyre,

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    50/102

    50 | O l d a l

    hogy rtesljnk a gyorsulssal kapcsolatos vltozsokrl! A Start metdus

    meghvsa utn szleljk a vltozsokat.

    public MainPage(){

    InitializeComponent();if (Accelerometer.IsSupported){

    acMeter = newAccelerometer();acMeter.CurrentValueChanged += new

    EventHandler(acMeter_CurrentValueChanged);

    acMeter.Start();}else{

    MessageBox.Show("A kszlkben nincs gyorsulsmr a kszlkben!");

    }}

    7. Termszetesen meg kell rnunk a CurrentValueChanged esemny trzst is. Elszrlekrdezzk a labda jelenlegi pozcijt, majd a szenzor ltal meghatrozott adatokat

    beszorozzuk 10-zel (gyorstunk rajta). Ezt kveten van egy egyszer (m nem

    teljesen pontos) ellenrzsi pont, ahol ellenrizzk, hogy a labda ne hagyja el a

    kijelzt, vgl megadjuk a labda j pozcijt. Ehhez a Dispatcher.BeginInvoke-ot

    hasznltuk, ugyanis a gyorsulsmr esemnye egy httrszlon fut. Ahhoz, hogy

    hozzfrjnk a felhasznli fellethez ebbl a szlbl, kell a Dispatcher.void acMeter_CurrentValueChanged(object sender,SensorReadingEventArgs e){

    Dispatcher.BeginInvoke(() =>{

    double newLeft = (double)ball.GetValue(Canvas.LeftProperty) +e.SensorReading.Acceleration.X * 10;

    double newTop = (double)ball.GetValue(Canvas.TopProperty) +e.SensorReading.Acceleration.Z * 10;

    if (newLeft < 0) newLeft = 0;

    elseif (newLeft > 400) newLeft = 400;if (newTop < 0) newTop = 0;elseif (newTop > 700) newTop = 700;

    ball.SetValue(Canvas.LeftProperty, newLeft);ball.SetValue(Canvas.TopProperty, newTop);

    });}

    8. Indtsuk el az alkalmazst, s prbljuk ki mkds kzben! A Windows Phone 7.1SDK-tl emultorban is kiprblhat, de ha szenzort hasznlunk, akkor minden

    esetben prbljuk ki egy fizikai kszlken is!

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    51/102

    51 | O l d a l

    Az eredmny kpekben.:

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    52/102

    52 | O l d a l

    Giroszkp hasznlataEzzel a szenzorral megllapthatjuk, hogy a felhasznl hogyan mozgatja a trben a telefont.

    A giroszkp nem tartozik a telefon alapfelszereltsghez, viszont vannak kszlkek, amik

    tmogatjk ezt a szenzort. A giroszkp hasznlata nagyon hasonlt az acceloromterhez.

    1. Ksztsnk egy j Windows Phone 7 alkalmazst!2. A referencikhoz adjuk hozz a Microsoft.Devices.Sensors s a

    Microsoft.XNA.Framework assembly-t! Solution Explorer-ben

    kattintsunk jobb egrgombbal, a References-en a megjelen helyi

    menbl vlasszuk ki a Microsoft.Devices.Sensors s a

    Microsoft.XNA.Framework assemblyt, s kattintsunk az OK gombra!

    3. Oldjuk fel a Microsoft.Devices.Sensors s aMicrosoft.XNA.Framework nvtereket:

    using Microsoft.Devices.Sensors;using Microsoft.Xna.Framework;

    4. A Contentpanel gridjhez adjunk ngy Textblock-ot: az els hrom az X, Y, Z trbelipozcikat fogja megjelenteni, mg az utols Textblock akkor jelenik meg, ha a

    giroszkp nem tmogatott eszkz. Ezenkvl hrom line-t is rajzolunk. Ennek fogjuk a

    mreteit vltoztatni. A XAML a kvetkezkppen nz ki:

    5. Ezt kveten hozzunk ltre egy giroszkpot (most a konstruktor eltt tesszk eztmeg)! Pldnyostsa ksbb trtnik meg a konstruktorban.

    Gyroscope gSensor;

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    53/102

    53 | O l d a l

    6. A konstruktorban ellenrizzk, hogy rendelkezsnkre ll-e a giroszkp! Ha igen,pldnyostsuk, s iratkozzunk fel a CurrentValueChanged esemnyre, ezt kveten

    hvjuk meg a Start metdust! A TimeBetweenUpdates tulajdonsggal a

    mintavtelezsi idt hatrozhatjuk meg:

    public MainPage(){

    InitializeComponent();

    if (Gyroscope.IsSupported){

    gSensor = newGyroscope();gSensor.TimeBetweenUpdates = TimeSpan.FromMilliseconds(30);

    gSensor.CurrentValueChanged += new

    EventHandler(g_CurrentValueChanged);

    gSensor.Start();}else{

    statusTextBlock.Text = "A giroszk nem tmogatott!";}

    }

    7. A CurrentValueChanged esemny trzst is rjuk meg: itt kirjuk a Textblock-nak az X,Y,Z rtkeket, valamint ennek fggvnyben cskkentjk vagy pp nveljk a vonalakrtkeit.

    void g_CurrentValueChanged(object sender,SensorReadingEventArgs e){

    Dispatcher.BeginInvoke(() =>{

    Vector3 rotationReading = e.SensorReading.RotationRate;

    xTextBlock.Text = "X " + rotationReading.X.ToString("0.00");yTextBlock.Text = "Y " + rotationReading.Y.ToString("0.00");zTextBlock.Text = "Z " + rotationReading.Z.ToString("0.00");

    xLine.X2 = xLine.X1 + rotationReading.X * 200;yLine.Y2 = yLine.Y1 - rotationReading.Y * 200;zLine.X2 = zLine.X1 - rotationReading.Z * 100;zLine.Y2 = zLine.Y1 + rotationReading.Z * 100;

    });}

    8. Indtsuk el az alkalmazst s prbljuk ki! Emultoron nem tudjuk kiprblni ezt afunkcit, viszont sajnos a fizikai kszlkek egy rsze sem tmogatja ezt a szenzort.

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    54/102

    54 | O l d a l

    Irnyt hasznlataMeghatrozhatjuk, hogy a telefonunk melyik gtj fel nz. Hasznlata nagyon hasonl az

    elzekben megismert szenzorokhoz. Sajnos ez szintn olyan szenzor, amit nem tudunk

    kiprblni az emultorban, a kiprblshoz olyan fizikai kszlkre van szksgnk, amely

    tmogatja ezt a szenzort. Nzzk is meg mkds kzben:

    1. Ksztsnk egy j Windows Phone 7 alkalmazst!2. A referencikhoz adjuk hozz a Microsoft.Devices.Sensors s a

    Microsoft.XNA.Framework assembly-t. Solution Explorer-ben kattintsunk jobb

    egrgombbal, a References-en a megjelen helyi menbl vlasszuk ki a

    Microsoft.Devices.Sensors s a Microsoft.XNA.Framework assemblyt s kattintsunk az

    OK gombra!

    3. Oldjuk fel a Microsoft.Devices.Sensors s s a Microsoft.XNA.Framework nvtereket:using Microsoft.Devices.Sensors;using Microsoft.Xna.Framework;

    4. A Contentpanel gridjhez adjunk ht Textblock-ot, ezen kvl egy line-t is rajzolunk afelhasznli felletre, ennek fogjuk a mreteit vltoztatni. A XAML a kvetkezkppen

    nz ki:

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    55/102

    55 | O l d a l

    5. Ezt kveten hozzunk ltre egy irnytt (most a konstruktor eltt tesszk ezt meg)!Pldnyostsa ksbb trtnik meg a konstruktorban.

    Compass compassSensor;

    6. Nzzk meg, hogy a kszlk tmogatja-e az adott szenzort! Ha igen, pldnyostsuka Compass osztlyt, lltsuk be a mintavtelezsi intervallumot, valamint iratkozzunkfel a CurrentValueChanged esemnyre, s vgl hvjuk meg a Start metdust:

    public MainPage(){

    InitializeComponent();if (Compass.IsSupported){

    compassSensor = newCompass();compassSensor.TimeBetweenUpdates = TimeSpan.FromMilliseconds(1);

    compassSensor.CurrentValueChanged += newEventHandler(compass_CurrentValueChanged);

    compassSensor.Start();}

    }

    7. A CurrentValueChanged trzst is rjuk meg: itt kiratjuk a megfelel rtkeket,valamint a kirajzolt vonalat (Line) mdostjuk az gtjnak megfelelen:

    Void compass_CurrentValueChanged(object sender,SensorReadingEventArgs e){

    Dispatcher.BeginInvoke(() =>{

    magneticValue.Text = e.SensorReading.MagneticHeading.ToString("0.00");trueValue.Text = e.SensorReading.TrueHeading.ToString("0.00");

    magneticLine.X2 = magneticLine.X1 - (200 *Math.Sin(MathHelper.ToRadians((float)e.SensorReading.MagneticHeading)));magneticLine.Y2 = magneticLine.Y1 - (200 *Math.Cos(MathHelper.ToRadians((float)e.SensorReading.MagneticHeading)));

    xBlock.Text = "X: " +e.SensorReading.MagnetometerReading.X.ToString("0.00");yBlock.Text = "Y: " +e.SensorReading.MagnetometerReading.Y.ToString("0.00");zBlock.Text = "Z: " +e.SensorReading.MagnetometerReading.Z.ToString("0.00");

    });}

    8. Ezt az alkalmazst is csak fizikai kszlken tudjuk kiprblni, amelyben vanirnytszenzor. Az rdekessg kedvrt a kszlk mellett mozgassunk egy mgnest,

    s figyeljk meg ennek a hatst!

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    56/102

    56 | O l d a l

    User Control ksztseSokszor elfordul fejlesztsi eset, hogy ugyanazt a modult, komponenst jra s jra fel kell

    hasznlni a projekten bel, vagy egy msik projektben. Nem lenne tl hatkony minden

    esetben jra megrni ugyanazt a kdsort, vagy pp msolni a kdokat. Nzznk erre egy

    egyszer pldt!

    Tegyk fel, hogy lenne egy olyan alkalmazsunk, ahol a szolgltats elrshez be kell

    jelentkeznie a felhasznlnak! A Login vezrlt az alkalmazs sorn legalbb 5-6 helyen

    feldobhatjuk, de nem szeretnnk ezt ilyen sokszor jra megrni. Kell teht egy ltalnosabb

    megolds.

    1. Ksztsnk egy j Windows Phone 7 projektet, a neve legyen a WP7UserControlDemo!2. A Solution Explorer-be kattintsunk jobb egrgombbal, majd adjunk egy j User

    Controlt a projektnkhz: Add -> New Item -> Windows Phone User Control! A User

    Control neve legyen a LoginControl!

    3. A LoginControl tervezi nzetben helyezzk el a kvetkez vezrlket:a. TextBlock: Text = Felhasznl nv:b. TextBox: Name = txtUserNamec. TextBlock: Text = Jelsz:d. PasswordBox: Name = pwdBoxe. Button: Name=btnCancel, Content=Mgsef. Button: Name=btnLogin, Content=Bejelentkezsg. A User Control mrett lltsuk a vezrlknek megfelelen !

    4. A User Control mr most is hasznlhat, de ksztnk a user control-nak ktesemnyt: az egyik a Mgse, a msik a Bejelentkezs gombra val nyoms lesz.Kattintsunk mind a kt gombra, ezzel betltve a kt gomb klikk esemnyt, majd

    ksztsnk egy delegtumot s kt egyszer esemnyt! A kd a LoginControl kdja, a

    kvetkezkppen fog kinzni:

    publicpartialclassLoginControl : UserControl{

    publicdelegatevoidButtonEventHandler(object sender, EventArgs e);publiceventButtonEventHandler CancelClick, LoginClick;

    public LoginControl(){

    InitializeComponent();

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    57/102

    57 | O l d a l

    }

    privatevoid btnCancel_Click(object sender, RoutedEventArgs e){

    if (CancelClick != null){

    CancelClick(sender, e);}

    }

    privatevoid btnLogin_Click(object sender, RoutedEventArgs e){

    if (LoginClick != null){

    LoginClick(sender, e);}

    }

    }

    5. Itt az ideje kiprblni a vezrlt: nyissuk meg a MainPage.xaml.cs fjlt, majd az xmlnvterek kz vegyk fel a projektnket! (Adjunk szmra egy aliast is! Ez most a

    control nvre fog hallgatni.)

    xmlns:control="clr-namespace:WP7UserControlDemo "

    6. A layoutroot (grid) elrendezsvezrlbe pedig helyezzk el a login vezrlnket!

    7. Ha mindent jl csinltunk, mr meg is jelenik a tervezi nzetben a Login vezrlnk.Mg annyit tegynk meg, hogy a Login vezrlnk LoginClick esemnyre

    feliratkozunk, s annak az esemnynek adunk egy trzset:

    8. A code behind-ba egyszeren csak hvjuk meg a MessageBoxot:privatevoid Login_Click(object sender, EventArgs e){

    MessageBox.Show("Sikeres bejelentkezs!");}

    9. Indtsuk el az alkalmazst, s prbljuk ki mkds kzben a vezrlt!Az jrafelhasznlhatsg jegyben igyekezznk mindig vezrlkben gondolkodni, s

    prbljuk minl ltalnosabb funkcionalitssal elltni.

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    58/102

    58 | O l d a l

    PopUpEgy page-en (oldalon) bell messagebox-on kvl feldobhatunk tovbbi ablakokat is. Ezeket a

    felugr ablakokat nevezzk popup-nak. A PopUp egy gyermek elemet tud tartalmazni, de az

    lehet akr egy sszetett elrendezsvezrl, ami tovbbi vezrlket tartalmaz. Gyakran a

    PopUp egy UserControl-t tartalmaz, gy most n se egy gomb poppostst akarom

    bemutatni, hanem az elz LoginControl-t fogjuk feldobni.

    1. Nyissuk meg az elz WP7UserControlDemo t!2. Ha a MainPage-en szerepel a login vezrl, akkor egyszeren csak tvoltsuk el!3. Azrt, hogy ne legyen tltsz a Login vezrl, s legyen kerete, nyissuk meg a

    LoginControl.xaml-t, majd a grid-et helyezzk egy Border-be, aminek van httrszne,

    kerete s keretszne!

    ...

    4. Trjnk vissza a MainPag-re, s a adjunk hozz egygombot, melynek neve legyen a btnLogin, a

    Content-je pedig Bejelentkezs!

    5.

    Nyissuk meg a XAML-t, s a ContentPanel-benhelyezznk el egy PopUp-ot! A neve legyen a

    LoginPopup, a tartalma pedig az elzleg

    megismert Login-vezrl! A Login-vezrlnek

    iratkozzunk fel a Login Click esemnyre is! Ksbb

    ezt is megrjuk.

    6. Ha ezzel megvagyunk, kattintsunk a btnLogin gombra ktszer, majd a klikk esemnytrzsben nyissuk ki a PopUp ablakot! A PopUp megjelentst vagy elrejtst az

    IsOpen tulajdonsggal llthatjuk. A PopUp mindvgig az oldalunkon van, csak

    elrejtve, akkor jelenik meg, ha mi az IsOpen tulajdonsgot true-ra lltjuk.

    privatevoid btnLogin_Click(object sender, RoutedEventArgs e){

    LoginPopup.IsOpen = true;}

    7.

    A LoginClick trzst is rjuk meg, ez pedig egy zenetbl fog llni, s a PopUpbezrsbl.

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    59/102

    59 | O l d a l

    privatevoid Login_Click(object sender, EventArgs e){

    MessageBox.Show("Sikeres bejelentkezs!");LoginPopup.IsOpen = false;

    }

    Prbljuk ki az alkalmazst, nzzk meg, hogyan mkdik! Figyeljk meg, hogy a Mgsegombra kattintva nem zrdik be a PopUp! nll feladatknt oldjuk meg ezt a problmt!

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    60/102

    60 | O l d a l

    DatePicker Windows Phone 7 ToolkitHa megnyitjuk a Visual Studio 2010-et, s elkezdennk keresni egy olyan Windows Phone 7

    vezrlt, amivel dtumot lehetne megadnia a felhasznlnak, akkor olyat nem tallnnk.

    Persze feldobhatunk egy Texbox-ot, s az InputScope-pal is varzsolhatunk, de ez egyfell

    knyelmetlen, msfell nem clspecifikus, s sok hibt is rejthet magban.

    Ha DateTime picker-re van szksgnk, akkor a Windows Phone 7 toolkit-jt kell

    hasznlnunk.

    1. Ksztsnk egy j Windows Phone 7 alkalmazst!2. A referencikhoz adjuk hozz a Microsoft.Phone.Controls.Toolkit assembly-t!

    3. Nyissuk meg a MainPage.xaml-t, s az XML nvterek kz vegyk fel a toolkit-et:xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

    4. A ContentPanel-be adjuk hozz a DatePicker-t:

    5. Indtsuk el az alkalmazst! Ltszlag csak egy egyszer textbox-ot ltunk egydtummal, de amikor rkattintunk, betltdik a DatePicker oldala.

    http://silverlight.codeplex.com/releases/view/75888http://silverlight.codeplex.com/releases/view/75888http://silverlight.codeplex.com/releases/view/75888
  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    61/102

    61 | O l d a l

    ExpanderView Windows Phone 7 ToolkitVannak esetek, amikor bizonyos vezrlket (szveget vagy akr mst) el szeretnnk rejteni, s

    csak akkor jelentennk meg, amikor felttlenl fontos. Az expanderView vezrl egy specilispanel, amely sszecsukhat, valamint lenyithat, s a benne tallhat vezrlket

    csoportosthatjuk.

    Nzznk egy pldt a hasznlatra:

    1. Ksztsnk egy j Windows Phone 7 alkalmazst!2. A referencikhoz adjuk hozz a Microsoft.Phone.Controls.Toolkit assembly-t!

    3.

    Nyissuk meg a MainPage.xaml-t s az XML nvterek kz vegyk fel a toolkit-et!xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

    4. A ContentPanelhez adjunk egy ExpanderView-t, amelynek a header-je legyen aTartalom szveg!

    5. A ExpanderView-ba tovbbi vezrlket is elhelyezhetnk. Mi most egy Textblock-otfogunk elhelyezni benne, aminek a TextWrapping tulajdonsgt Wrap-re llitjuk, a

    Text tulajdonsgot pedig lorem ipsum szveggel tljk ki (cikket is bemsolhatunk).

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    62/102

    62 | O l d a l

    6. Indtsuk el az alkalmazst, s prbljuk ki mkds kzben! Kattintsunk a tartalomszvegre! Ekkor az ExpanderView kinylik, s megjelenti a benne tallhat tartalmat.

    Ha ismtelten rkattintunk, akkor sszezrdik. FONTOS tudni, hogy megszabhatunk

    ms Expander objektumot is, amivel kinyithatjuk vagy sszezrhatjuk az

    ExpanderViewet (pl.: kpzeljnk el egy hrolvas alkalmazst, ahol csak a cmekltszanak, de ha a felhasznl a cikk cmre vagy a mellette tallhat gombra kattint,

    akkor az ExpanderView lenylik, s megjelenik a tartalma).

    Figyeljk meg, hogy mind a nyitsnak, mind a zrsnak van egy alaprtelmezett

    animcija is!

    Az eredmny kpekben:

    A Windows Phone 7 Outlook-ja is hasznlja az ExpanderViewt.

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    63/102

    63 | O l d a l

  • 7/29/2019 Windows Phone 7 Kdgyjtemny

    64/102

    64 | O l d a l

    MultiselectList Windows Phone 7 ToolkitHa tbb elemet szeretnnk kivlasztani egy listbl, akkor a MultiselectList nagy segtsg

    lehet a szmunkra. Ez a vezrl is a Windows Phone 7 Toolkit rsze.

    Hasznlata nagyon egyszer.

    1. Ksztsnk egy j Windows Phone 7 alkalmazst!2. A referencikhoz adjuk hozz a Microsoft.Phone.Controls.Toolkit assembly-t!3. Nyissuk meg a MainPage.xaml-t, s az XML nvterek kz vegyk fel a toolkit-et!

    xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Micr