XAML Powiązanie danych pojedynczego obiektu MVVM
Jestem debiutantem, czasami utknąłem w myślach prostych i / lub głupich, to jest jeden z nich.
Mam ogólną ideę powiązania danych, przeszedłem przez kilka samouczków w sieci i przez kilka godzin przeszukałem go przez wiele tekstów, co tylko trochę mnie pomieszało.
PROBLEMpracuję nadAplikacja Windows Phone 8 C # / XAML .NET 4.5.
Korzystając ze strony internetowej dostarczonej mi z kilkoma metodami, które ładuję dane, które muszę wyświetlić (czasami w różnych kombinacjach) i muszę przechowywać większość z nich na czas działania aplikacji.
W tym celu stworzyłemViewModel + kilka modeli i skonstruowałem je w ten sposób:
MainViewModel
--------------
|
+ several properties (Username, Password, etc...)
|
+ Commands (loadData1, loadData2, flush, ... - implementations of ICommand)
|
+ ------ PersonalInfoModel
| -----------------
| + several properties (name, surname, phonenumber, etc...)
|
|
+ ------ DataGroup1Model
| ---------------
| +several properties
| +ObservableCollection<Item1> (roughly 0 - 50 items)
| +ObservableCollection<Item2> (roughly 0 - 5 items)
| +ObservableCollection<string> (roughly 0 - 5 items)
|
| Item1 Item2
| ----- -----
| +several properties +several other properties
|
|
+ ------ DataGroup2Model (similar to previous)
...et cetera...
ViewModel nie jest wypełniany od razu (ponieważ nie może być), ale dane są ładowane do niego, gdy użytkownik przechodzi przez aplikację i określa, jakie dane chce załadować (opiera się to głównie na pewnym przedziale czasowym i / lub innych kryteriach).
StworzyłemMainViewModel wApp.xaml.cs lubię to:
private static MainViewModel viewModel = null;
public static MainViewModel ViewModel
{
get
{
if (viewModel == null)
{
viewModel = new MainViewModel();
}
return viewModel;
}
}
UWAGA: Od niektórych osób słyszałem, że MVVM może / powinien być używany w inny sposób i powinienem utworzyć ViewModel dla każdej strony zamiast mieć jedną klasę podobną do pojedynczej, z której można by się wiązać. Po zastanowieniu postanowiłem, że to będzie tak, jak teraz.
Chciałbym teraz ustawićviewModel
Stworzyłem jako źródło / datacontext, aby powiązać z XAML
Jak to osiągnąć?
Jeśli chciałbym ustawićitemSource
listBox / longListSelector lubText
na przykład textBoxPersonalInfoModel
w środkuMainViewModel
, jak mam to zrobić?
P.S: Jak napisano w notatce na początku pytania, jestem debiutantem. Wiem, że czasami jest nam ciężko, ale żaden z wielkich myślicieli po prostu nie zrodził się z wielkiej pustki, dlatego proszę o bardziej szczegółowe wyjaśnienie, a potem po prostu „Powinieneś ustawić swój obiekt jako źródło danych w oknie, a następnie ustawić to „