Artykuły dla kategorii Programowanie

freeimages.com
paź 10 2015
0

Implementacja komendy Tap dla TextBlocka

Domyślnie tworząc aplikacje uniwersalne, możemy korzystać z rozbudowanego modelu zdarzeń. Każde ze zdarzeń, może zostać zaimplementowane w tzw. części code-behind wybranej strony/kontrolki. Nie wszystkim do końca odpowiada jednak ten model. Spore grono programistów jest zwolennikiem architektury MVVM, która promuje wydzielone konstrukcje zwane ViewModelami. Ważnym elementem ViewModel są komendy, które pozwalają na realizację określonych zadań. Niestety nie wszystkie kontrolki Microsoftu są do tego dobrze przygotowane. Czy można sobie z tym jakoś poradzić?

Częściowo tak. Po pierwsze, można wykorzystać Behaviors SDK (więcej na ten temat pisałem tutaj). Jeśli to rozwiązanie nie zadziała, można skorzystać z innych metod alternatywnych - np. z Attached properties. I to właśnie ten sposób mam zamiar Wam dzisiaj zaprezentować.

freeimages.com
paź 03 2015
0

Zapisywanie danych użytkownika w Universal Apps

W chwili obecnej tworząc aplikacje mobilne, bardzo często korzystamy z Internetu, o czym wspominałem po części w ostatnim wpisie. Siłą rzeczy w chmurze często trzymamy też konfigurację aplikacji/usługi, aczkolwiek nie musi to być regułą. Aplikacje uniwersalne obsługują bowiem tzw kontenery danych (ApplicationDataContainer), które pozwalają na zapisywanie ustawień dla konkretnej instalacji, a także globalnie dla naszego konta Windows Live. W dzisiejszym wpisie, zaprezentuję prosty sposób na wykorzystanie tych mechanizmów w praktyce.

freeimages.com
wrz 24 2015
0

Universal Apps - weryfikacja stanu połączenia internetowego

Większość mobilnych aplikacji wymaga aktywnego połączenia internetowego do poprawnego działania. Wiele z nich, nie posiada nawet trybu offline i bez sieci po prostu nie jest w stanie funkcjonować. Często developer musi również reagować na rodzaj połączenia sieciowego, z którego aktualnie korzysta użytkownik (WiFi/GSM), dlatego temat ten jest naprawdę ważny z perspektywy całego projektu aplikacji.

Na szczęście wszystkie opisane wyżej zagadnienia można łatwo oprogramować w aplikacjach uniwersalnych - wystarczy tylko skorzystać z klasy NetworkInformation, której przykładowe użycie zaprezentuję w dzisiejszym tekście:-)

freeimages.com
sie 27 2015
0

Universal Apps - mapowanie danych z API na potrzeby XAML

Tworząc aplikacje mobilne, nie jest łatwo zbudować model danych, który idealnie odpowiadałby potrzebom aktualnego widoku. Problem staje się jeszcze bardziej złożony, w sytuacji gdy korzystamy z API, które zwraca ogólny model, dla rożnych końcówek. W takiej sytuacji, programista aplikacji mobilnej musi sam zadbać o odpowiednie wyświetlenie i sformatowanie otrzymanych danych..

W świecie Universal Apps problem ten można rozwiązać na różne sposoby. Osobiście preferuje tutaj wykorzystanie architektury MVVM, która wymaga od programisty stworzenia dedykowanego ViewModelu zawierającego odpowiednio przygotowane dane do wyświetlenia. Nie wszystkie właściwości da się jednak sensownie odpowiednio przetworzyć - zwłaszcza jeśli określony element danych wyświetlany jest inaczej na komputerze i telefonie. W takiej sytuacji z pomocą przyjdą konwertery. W dzisiejszym tekście zaprezentuje mix obu rozwiązań na przykładzie prostej aplikacji na telefon.

freeimages.com
lip 26 2015
0

Więcej MVVM w Universal Apps dzięki Behaviors SDK

Technologie typu WPF, czy Universal Apps aż proszą się o zastosowanie MVVM, jednak wsparcie dla tej architektury po stronie tych rozwiązań, jest umówmy się - co najwyżej średnie. Bardzo mało kontrolek posiada wbudowaną obsługę komend. I nawet jeśli się ona pojawia, to i tak nie dotyczy ona wszystkich dostępnych w kontrolce zdarzeń. Poza tym, nie ma jawnego wsparcia dla ViewModeli. Standardowo zbudowana aplikacja składa się ze stron wykorzystujących code-behind.

Na szczęście oba te problemy można w pewnym sensie dość mocno zmarginalizować. O tym drugim pisałem już trochę przy okazji tekstu poświęconego bibliotece MVVM Light. Ten pierwszy jest odrobinę bardziej skomplikowany, ale również można go stosunkowo łatwo obejść. Wystarczy tylko włączyć w projekcie rozszerzenie Behaviors SDK, a następnie dokonać odpowiedniej implementacji:-) Nad tym właśnie tematem skupię się w dzisiejszym tekście.

Na koniec wstępu, jeszcze mała uwaga techniczna. Przykłady zostały napisane pod kątem systemu Windows Phone 8.1 (UA), ale z zaprezentowanych tutaj rozwiązań można skorzystać również w aplikacjach pisanych dla Windows 8.1, czy WPF:-)

freeimages.com
lip 12 2015
0

Player Framework by Microsoft - customizacja

Standardowy player Microsoftu (kontrolka MediaElement), z którego możemy korzystać m.in. w Universal Apps, ma wiele zalet i funkcjonalności, ale ma też niestety dwie poważne wady.

Po pierwsze - nie jest do końca zgodny z MVVM. Nie mamy tutaj wsparcia dla komend, czy ViewModeli. Po drugie, jest bardzo słabo rozszerzalny. Jakakolwiek modyfikacja w większości przypadków jest bardzo trudna, a przecież przy kontrolkach tego typu, rozszerzalność, czy skalowalność to wręcz podstawa. Czy jest zatem jakieś wyjście z całej tej opresji?

Okazuje się, że tak, a jest nim biblioteka Player Framework od Microsoftu, która oprócz wsparcia dla UA, oferuje również końcówki dla Windows 8, HTML5, Silverlight, Windows Phone itp. W dzisiejszym tekście przedstawię kilka ciekawych (mam nadzieję) niaunsów związanych z tym frameworkiem w kontekście użycia w Universal Apps.

freeimages.com
lip 03 2015
0

Efektywne wykorzystanie dyrektyw preprocessora

Tworzenie instrukcji warunkowych jest czymś naturalnym w praktycznie każdym języku programowania. Trudno sobie jest wyobrazić kod źródłowy nawet najprostszej aplikacji, który byłby pozbawiony konstrukcji IF - w pewnym sensie tego rodzaju instrukcje, kontrolują przepływ sterowania. Warto wiedzieć, że w C# nasze możliwości na tym polu są jeszcze większe m.in. dzięki dyrektywom preprocesora.

Dyrektywy preprocesora wpływają na to co zostanie skompilowane. Możemy np. inny fragment kodu przeznaczyć dla kompilacji Debug, a inny dla Release. W aplikacjach uniwersalnych możemy tworzyć warunki z perspektywy systemu docelowego (oczywiście ten element dotyczy części Shared/bibliotek Portable). Możliwości są znacznie większe, ale najważniejsze jest to, że nie musimy polegać na predefiniowanych przez Microsoft symbolach, lecz możemy też tworzyć swoje własne:)

freeimages.com
cze 26 2015
0

Ciekawe możliwości kontrolki TextBlock

Język znaczników XAML, jest integralnym elementem kilku ważnych technologii Microsoftu. Pojawia się on: w sukcesywnie upadającym Silverlighcie, WPFie, Windows Phonie, czy też w aplikacjach uniwersalnych. Dlatego też jeśli poznacie jedno z wymienionych wyżej środowisk, to bardzo łatwo będzie się Wam przestawić na dowolną z pozostałych technologi.

W zależności od środowiska, mogą pojawiać się pewne delikatne różnice w możliwościach jakie dostarczy nam XAML, ale mimo wszystko jest naprawdę sporo rzeczy wspólnych - ot choćby podstawowe kontrolki.

Jedną z takich kontrolek jest pozornie prosty TextBlock, który w praktyce skrywa w sobie spore możliwości. Jakie? Na te pytanie postaram się odpowiedzieć trochę szerzej w dalszej części tekstu;-)

freeimages.com
cze 18 2015
0

Implementacja dynamicznego doczytywania treści w kontrolce ListView

W architekturze WinRT możemy korzystać z dwóch bardzo przyjemnych kontrolek do prezentacji danych - ListView oraz GridView. Obie te kontrolki mają duże możliwości konfiguracyjne, posiadają sporo zdarzeń i można je również fajnie ostylować. Jednym słowem jest naprawdę dobrze;-)

Naszą piękną, idealistyczną sielankę może jednak w łatwy sposób zakłócić, pewien dość prozaiczny problem, który nazywa się nadmiar danych. Tego rodzaju sytuacja zasadniczo nie ma żadnych pozytywów. Nasza aplikacja pochłonie duże ilości pamięci, może zacząć się zacinać, a dodatkowo jeśli dane pochodzą z zewnątrz, niepotrzebnie pobierzemy dane, które być może nigdy nie zostaną wyświetlone...

W praktyce okazuje się, że można jednak łatwo wybrnąć z tej sytuacji - wystarczy bowiem w zbindowanej kolekcji zaimplementować interfejs ISupportIncrementalLoading i życie znów stanie się piękne;-)

freeimages.com
cze 11 2015
0

Hakowanie strony w kontrolce WebView

Aplikacje na telefon pełnią różne funkcje, ale z założenia często są one mobilnym odpowiednikiem stron WWW. I choć w dzisiejszych czasach coraz więcej mamy w sieci stron responsywnych, to i tak komfort pracy z dedykowanym programem wciąż często bywa znacznie wyższy. Nie oznacza to oczywiście, że strony WWW na przeglądarce telefonu są czymś złym.. czasem jest to naprawdę dobra opcja na start. Okazuje się również, że dzięki RWD możliwe jest również łatwe osadzanie pewnych fragmentów witryn bezpośrednio w aplikacjach i to z naprawdę przyzwoitymi efektami.

Dobrym tego przykładem mogą być wszelkiej maści strony regulaminów, czy FAQ, które raczej nie wymagają jakiejś wielkiej interakcji ze strony użytkownika i bez problemu można je osadzić praktycznie niezauważalnie w kontrolce WebView oszczędzając sobie konieczność dublowania tego rodzaju contentu.

Z tego typu tematami jest jednak pewien problem, ponieważ w pewnym sensie możemy stracić kontrolę nad wyświetlaną treścią. W praktyce okazuje się jednak, że kontrolka WebView ma pewną ciekawą metodę, która odpowiednio użyta daje naprawdę spore możliwości, którym warto się przyjrzeć bliżej, co też dzisiaj uczynimy:-)