Archívum

Posts Tagged ‘Windows Phone 8’

Windows Phone System Tray – Az a bizonyos fehér szín

2013. április 5. péntek 3 hozzászólás

Szóval itt van ez a gyönyörű jószág: a Windows Phone. A WP8 sokat fejlődött elődjéhez képest, hisz itt már nagyszerű (haha) WinRT fut a mélyén. Igazából ezzel nincs is itt különösebb baj, igaz, hogy sok minden duplikálva van az API-ban, de hát ezen még az ember túllendül. Kezdek egy szabadidős projektemnek a végére érni, és ilyenkor jön az ellenőrzés. Ugyanis viszonylag szigorú feltételeknek kell megfelelni ahhoz, hogy az alkalmazás bekerüljön a Microsoft Store-ba. (Igaz, ha valami gagyit tölt fel az ember akkor az átmegy mert sok mindent nem lehet elrontani.) El is kezdtem tesztelni az alkalmazást. Első teszt az volt, hogy hogy is néz ki fehér háttérrel az alkalmazás, mert ugye ha elütnek a színek vagy kín van vele, akkor visszadobják az egészet. Na már most erről azt kell tudni, hogy ha a fejlesztő nem csak a beépített színeket és sablonokat akarja használni mert létrehozna valami egyedit akkor cseszheti. Na de sebaj, ez végül is egy követelmény, és teljesen jogos is, max a létjogosultságával lehet vitatkozni – szerintem.

De tértjünk a tárgyra!

Elkezdi az ember stílusozni az alkalmazást. Minden textblocknak vezérlőnek stílust készít, leszármaztatja stb. Eljut két fontos vezérlőig amivel megint csak baja lesz. Az egyik az ApplicationBar ami ugye nem silverlight kontrol (héé hát nem WinRT van?!), ezért se binding, se stílus, se routed eventje nincs. Írd be manuálisan amit akarsz, minden page-re külön. Jó-jó megcsinálom, bár a style-t pont erre találták ki, de ha nem hát nem. Sebaj beírtam, működik.

Jön a system tray. A system tray az alkalmazásunk felső résszén található, itt jelenik meg az óra, a hálózat, akku töltöttség és egyéb adatok. Hát ez se köthető nagyon, bár én megcsináltam, hogy legalább a ProcessIndicator szövege köthető legyen, mert hát mégis csak MVVM-et használ az ember. De jöttek a stílusok. Na mondom jó, hát úgy is csak néhány page-n kell a system tray-t használni. Be is írom neki, hogy mindenkép legyen fekete, és az előtér színe fehér.

Íme:

shell:SystemTray.IsVisible="True" shell:SystemTray.Opacity="0.7" shell:SystemTray.BackgroundColor="Black" shell:SystemTray.ForegroundColor="White"

Elindítom az alkalmazást és mit látnak szemeim:

image

Mi a szösz? Hogy-hogy fekete? De hát oda van írva, hogy White!

Na jó akkor teszteljünk! Kap egy sárga színt!

shell:SystemTray.IsVisible="True" shell:SystemTray.Opacity="0.7" shell:SystemTray.BackgroundColor="Black" shell:SystemTray.ForegroundColor="Yellow"

Vajon működni fog-e? Dobpergés! Működik!

image

Akkor, miért nem jó a fehér szín?

Próbáljuk meg, átszínezni kódból fehérre…. Bár az ember ilyenkor a fejét fogja, hogy akkor megint code-behind, vagy egyszerű dologhoz is hihetetlen workaroundok kellenek a ViewModel-be. Na de Code-behind!

SystemTray.SetForegroundColor(this, System.Windows.Media.Colors.White);

Láss csodát működik:

image

Tényleg megkérdezném a fejlesztőit, hogy ugyan mi baj van a fehér színnel, ha markup-ban akarom definiálni? Ha elakarom rontani fekete témával is eltudom…

Kategóriák:Windows Phone 8 Címkék:

Windows Phone 8 – Telerik RadWindow Bug

2013. február 11. hétfő 4 hozzászólás

Egy hobbi projektemhez a Windows Phone 8-as telerik vezérlőket használok. Igazából megvagyok vele elégedve. Nagyon látványos vezérlőket kapunk a telerik-től. Az ára is elég kellemes 99$ / év. Elég sok időt spórolnak meg nekem. Bár igaz utána kell keresni sokszor, hogy hogyan is működik egy-egy vezérlő. A dokumentáltsága elég szegényes pláne a WPF-es vagy az ASP.NET-es vezérlőkhöz képest.

Na de térjek a tárgyra. Egy RadWindow-ban (Ami am egy felturbózott popup) megszerettem volna jeleníteni egy Custom Controlt. Sikerült is minden. Szépen ment előre a projekt majd egyszer csak nem indult többé. Néztem, keresgéltem, hogy mi a répa lehet a baja. Egy jó 2 órát tuti elvett az életemből, mígnem rájöttem. A hiba akkor keletkezett, amikor a Custom Controlban Dependency Propertyket kezdtem el létrehozni. Még itt se volt baj, de Element Binding-gal kötöttem a UI elemekhez. Még ezzel sincs baj, csakhogy a UserControlt x:Name tulajdonságát én mindig root-ra állítom. Na is itt jött a gebasz. Ezt a szót ő nem szereti. Minden mást elfogad, csak a root nevet ne adjuk annak a user controlnak amit megakarunk a RadWindow-ban jeleníteni. És a legszebb, hogy akkor jár hibával ha az IsOpen (Boolean) tulajdonságot True-ra állítjuk, ami végül is logikus, de ilyenkor ArgumentExceptiont dob, miszerint az IsOpen nem lehet True.

Szóval szép kis hiba. Bár nem hiszem, hogy sokan használjátok, de mégis leírom, hátha valakinek valamikor jól jön, meg talán én se felejtem el.

Kategóriák:Telerik, Windows Phone 8 Címkék: , , ,