2017-02-08 24 views
0

我已經構建了一個xamarin項目,它在主頁上的listview中填充項目列表。我需要將此頁面上的變量傳遞給ViewModel類。我怎麼做???幫助將不勝感激。如何在我的ViewModel類的主頁中訪問變量?

我的主頁的代碼如下:

私人異步無效LstItems_OnItemTapped(對象o,ItemTappedEventArgs E)

{ 
     var ItemCodeParam = e.Item as Item; 

     var ItemCode = ItemCodeParam.ItemCode; 

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

我需要通過ItemCode我ViewModel類。

} 

我的視圖模型是如下

命名空間MyFirstDbApp.ViewModels { 公共類ItemDetailsViewModel:INotifyPropertyChanged的 { 私有列表_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

你在哪裏創建VM?只需將值傳遞給它的構造函數,或者設置一個屬性即可。 – Jason

+0

我真的很抱歉問你這個。但是,你可以告訴我如何在編碼?我在問題中包含了我的VM代碼。我需要將我的主頁上的ItemCode傳遞給VM ItemsList = result.Where(x => x.ItemCode ==「」).ToList(); – user1508599

回答

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

我得到一個異常拋出,其中說:mscorlib.ni.dll中發生類型'System.MissingMethodException'的異常,但未在用戶代碼中處理 附加信息:沒有爲此對象定義的無參數構造函數。 你確定我不必在主頁上寫任何代碼? – user1508599

+0

我假設你正在創建你的虛擬機時,你的DetailItemPage加載?你創建它時是否將參數傳遞給ItemDetailsViewModel構造函數? – Jason

+0

不,我在加載DetailItemPage時沒有創建VM。我只在主頁上的listview的item_tapped事件上調用DetailItemPage,請幫我做。我只是寫了你上面給出的代碼。 MVVM概念的新手。不知道如何處理它。這真的會對你有幫助。 – user1508599