2017-02-08 3 views
0

Ich habe ein Xamarin-Projekt erstellt, das eine Liste von Elementen in einer Listenansicht auf der Homepage auffüllt. Ich muss eine Variable auf dieser Seite an die ViewModel-Klasse übergeben. Wie mache ich das??? Hilfe wird geschätzt.Wie kann ich auf eine Variable in meiner Homepage in meiner ViewModel-Klasse zugreifen?

Meine Startseite Code ist wie folgt:

privat async Leere LstItems_OnItemTapped (Objekt o, ItemTappedEventArgs e)

{ 
     var ItemCodeParam = e.Item as Item; 

     var ItemCode = ItemCodeParam.ItemCode; 

     await Navigation.PushAsync(new DetailItemPage(ItemCode)); 

ich die meiner Ansichtsmodell Klasse ItemCode übergeben müssen.

} 

Meine Ansicht Modell ist als unten

Namespace MyFirstDbApp.ViewModels { public class ItemDetailsViewModel: INotifyPropertyChanged { private List _itemsList;

public List<Item> ItemsList 



    { 
     get { return _itemsList; } 

     set 
     { 
      _itemsList = value; 
      OnPropertyChanged(); 
     } 
    } 

    public ItemDetailsViewModel() 
    { 

     InitializeDataAsync(); 
    } 


    private async Task InitializeDataAsync() 
    { 






     var result = await ItemServices.GetItemsAsync().ConfigureAwait(false); 

     ItemsList = result.Where(x => x.ItemCode == "").ToList(); 


    } 


    public event PropertyChangedEventHandler PropertyChanged; 

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) 
    { 
     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 

}

+0

Wo legen Sie Ihre VM? Übergeben Sie einfach den Wert in seinen Konstruktor oder legen Sie eine Eigenschaft fest. – Jason

+0

Es tut mir wirklich leid, dich das zu fragen. Aber können Sie mir bitte sagen, wie man es in der Codierung macht ??? Ich habe meinen VM-Code in die Frage aufgenommen. Ich muss den ItemCode von meiner Homepage an die VM übergeben ItemsList = result.Where (x => x.ItemCode == ""). ToList(); – user1508599

Antwort

0
public ItemDetailsViewModel(string ItemCode) 
{ 
    InitializeDataAsync(ItemCode); 
} 

private async Task InitializeDataAsync(string code) 
{ 
    var result = await ItemServices.GetItemsAsync().ConfigureAwait(false); 

    ItemsList = result.Where(x => x.ItemCode == code).ToList(); 
} 
+0

Ich habe eine Ausnahme ausgelöst, die besagt: Eine Ausnahme vom Typ 'System.MissingMethodException' ist in mscorlib.ni.dll aufgetreten, wurde aber nicht im Benutzercode verarbeitet Weitere Informationen: Für dieses Objekt ist kein parameterloser Konstruktor definiert. sind Sie sicher, ich muss keinen Code auf der Homepage schreiben? – user1508599

+0

Ich nehme an, dass Sie Ihre VM erstellen, wenn Ihre DetailItemPage geladen wird? Übergeben Sie den Parameter beim Erstellen an den ItemDetailsViewModel-Konstruktor? – Jason

+0

Nein. Ich habe keine VM erstellt, als die DetailItemPage geladen wurde. Ich rufe die DetailItemPage nur auf dem item_tapped-Ereignis der Listenansicht auf meiner Homepage an. Bitte hilf mir dabei. Ich habe einfach den Code geschrieben, den Sie oben angegeben haben. Ein Neuling zum MVVM-Konzept. Keine Ahnung, wie ich damit umgehen soll. Es wird wirklich nett von dir sein, mir dabei zu helfen. – user1508599

Verwandte Themen