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.png7/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/konyv7/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).aspx7/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.aspx7/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).aspx7/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/konyv7/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).aspx7/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).aspx7/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).aspx7/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).aspx7/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).aspx7/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).aspx7/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/758887/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