Ze względu na “przepiękną” pogodę jaką mamy za oknem i brak jakichkolwiek ważnych rzeczy do zrobienia na dzisiaj, postanowiłem, że zacznę w końcu pracę nad aplikacją dla Windows 8.1 i Windows Phone 8.1, którą już dawno temu miałem zamiar napisać ale jak zwykle to u mnie bywa… Odkładam na później takie rzeczy 😐

Wcześniej pisałem aplikacje tylko na WindowsPhone a z aplikacjami dla Windows 8 i 8.1 miałem do czynienia tyle co kot z wodą 😉 Ale słowo się rzekło.

Z jednej strony ze względu na to, że przygotowuję się do drugiego egzaminu 70-484 a z drugiej, aplikacji, którą chcę napisać w markecie po prostu nie ma podjąłem się zadania 😀

Jak wiecie jakiś czas temu Microsoft dał nam możliwość tworzenia aplikacji Windows i WindowsPhone jednocześnie. Mowa tu oczywiście o tytułowym Universal Apps, z którym nie miałem w ogóle do czynienia.

Wcześniej już gdzieś na Channel9 oglądałem jakiegoś webcast na ten temat ale jakoś zbytnio uwagi do tego nie przywiązywałem. No ale człowiek uczy się całe życie!

Stworzyłem sobie nowy projekt o bardzo wdzięcznej nazwie App1 :). Visual Studio z automatu dodał do solucji 3 osobne projekty:

  • App1.Windows (Windows 8.1)
  • App1.WindowsPhone (Windows Phone 8.1)
  • App1.Shared

Pierwszym moim założeniem było dodanie MVVM Light do projektu tak aby było mi wygodnie… Z biblioteką miałem już nie raz do czynienia wiec wybór jak dla mnie był oczywisty.

To, że App1.Shared jest miejscem, w którym powinniśmy umieszczać wspólne rzeczy dla naszych dwóch aplikacji było mi znane i jest to fajne rozwiązanie.

Niewiele myśląc klikam prawym klawiszem myszy na projekt i szukam opcji Manage NuGet Packages… Nic! Nie ma! I zajebiste zdziwienie… To jak mam dodać bibliotekę do projektu i używać jej zarówno w aplikacji dla Windows i Windows Phone!?

Dziwnych prób i trochę czasu zajęło mi to aby w końcu znaleźć na to rozwiązanie 🙂

Wystarczy do projektu Windows i Windows Phone dodać za pomocą NuGet’a MVVM Light libraries only.

NuGetMVVM

Następnie w App1.Shared dodać 2 klasy:

  • ViewModelLocator
  • MainViewModel (ViewModel dla mojego pierwszego widoku)

Które to mają wyglądać w podobny sposób jak ten:

VIEWMODELLOCATOR.CS

MAINVIEWMODEL.CS

Teraz modyfikujemy plik App.xaml, który powinien wyglądać tak:

I w tym momencie nasza praca się kończy. Teraz wystarczy tylko zmodyfikować xaml’e w projektach dla Windows i Windows Phone dodając:

Wszystko zaczyna działać tak jak bym chciał 🙂

I w podobny sposób możemy dodać inne biblioteki, które chcielibyśmy mieć wspólne dla projektów. Jak na przykład biblioteka json czy jakiekolwiek inne.

Projekt oczywiście zamieściłem na github tak abyście mogli dokładnie zobaczyć co i jak.

Dodatkowo w projekcie, dodałem obsługę przycisku w menu gdzie click obsłużony jest po stronie view modelu jak i jego nazwa jest też stamtąd pobierana 🙂