Wpis z mikrobloga

#naukaprogramowania #windowsphone #csharp #xaml

Czemu w klasie w Shared (dla Universal App) nie widze obiektow z mainpage.xaml ?
Przykladowo, cos w mainpage.xaml (windows i windows phone) ma x:name "aaa". Chciałbym zmienic wlasciwosc tego obiektu (np. Source) z klasy abcd.cs, ktora znajduje sie w Shared.
Error, ktory mam :

Error CS0103 The name 'myObjectElement' does not exist in the current context
Dzieki za pomoc.
  • 9
@LubieLiscie: Zle przedstawilem swoj problem. W kodzie bledu jest oczywiscie 'aaa'.
W MainPage.xaml.cs moge w dowolnym miejscu przypisac aaa.Source jakis tekst, natomiast w klasie, ktora mam w Shared nie moge tego zrobic.

Podejrzewam, ze robie jakis podstawowy blad :/. Czy moze to byc zwiazane z modyfikatorami klasy ?
@smyq: klasa MainPage w pliku MainPage.xaml.cs ma słówko kluczowe partial. Trzeba to rozumieć całkiem dosłownie - w tym pliku ta klasa jest zdefiniowana tylko częściowo. Reszta jest generowana automatycznie z pliku MainPage.xaml (po kompilacji możesz spojrzeć do folderu, będzie tam plik MainPage.g.cs). MainPage.xaml i MainPage.xaml.cs tworzą jedną klasę.
Tymczasem w folderze Shared masz zdefiniowaną jakąś inna klasę. Ona nic nie wie o jakichkolwiek instacjach MainPage. Można próbować jakoś to obejść,
@LubieLiscie: Ok. Rozumiem, ze nie moge sie odniesc do jakiegokolwiek elementu usercontrol (zdefiniowanego w XAML w mainpage.xaml) z innej klasy niz mainpage, tak ?

Przypisanie bardziej powinno sie odbywac na zasadzie MVVM i tak tez zrobie.

W moim przypadku jest to jednak tylko mediaelement i chcialbym wykorzystac jego funkcje Play().

ehh, a mialo byc tak lekko :)
@smyq: myślę, że znalazł by się sposób (np. odnalezienie istniejącej instancji MainPage i odszukanie pożądanej kontrolki w drzewie). Ale jest to brzydkie.
Z MVVM powiązane jest bindowanie (Binding={...}), komendy (RelayCommand, były jeszcze inne ale nie pamiętam jak się nazywały), interfejs INotifyPropertyChanged i zdarzenia w XAMLu - to całkiem potężne narzędzia, które na dłuższą metę pozwalają pisać czytelniejszy i prostszy kod. Przynajmniej takie są moje odczucia, pewnie zawsze
@LubieLiscie: Gratuluje appki. Korzystam codziennie :)

Ja na razie sie jeszcze szkole z pisania programow na wp w Microsoft Virtual Academy.

Powiedz mi w takim razie, czy w pliku json, moge umiescic rozne grupy danych, czy tez raczej praktykuje sie to w osobnych plikach json ? Czy jak beda to osobne pliki, to bede mogl ustawic rozny datacontext dla "kontenerow?" (gridview, listview, grid...itd)

Moj przyklad :
Mam juz zbindowany i dzialajacy
@smyq: myślę, że jest obojętne. Byle tobie było wygodnie.
Mając osobne pliki nadal możesz ustawić DataContext dla kontrolek o których piszesz. Deserializując dane z pliku muszą być one gdzieś zapisane - najczęściej do kolekcji (ObservableCollection), czasem do listy (List). DataContext ustawiasz jako kolekcję, nie jako plik. To, jak odtworzysz kolekcję z dysku zależy tylko od ciebie.

Skoro twój drugi zbiór jest niezależny od pierwszego, to chyba czytelniej
@smyq: nie ma sprawy.
Nie kupowałem Windowsa, dostałem go z DreamSparka. Nie odważe się też instalować W10M na moim telefonie. Wobec tego, Tylko Mirko na W10M jest testowane tylko na emulatorze (który zdaje się mieć bugi ( ͡° ʖ̯ ͡°)).