2017-02-08 3 views
0

홈페이지에서 listview의 항목 목록을 채우는 xamarin 프로젝트를 빌드했습니다. 이 페이지의 변수를 ViewModel 클래스에 전달해야합니다. 나는 그것을 어떻게합니까 ??? 도움을 받으실 수 있습니다.내 ViewModel 클래스에서 내 홈페이지의 변수에 액세스하는 방법은 무엇입니까?

내 홈 페이지 코드는 다음과 같습니다 :

개인 비동기 무효 LstItems_OnItemTapped (객체 O를, ItemTappedEventArgs 전자)

{ 
     var ItemCodeParam = e.Item as Item; 

     var ItemCode = ItemCodeParam.ItemCode; 

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

나는 내 뷰 모델 클래스에을 ItemCode 통과해야합니다.

} 

내보기 모델

네임 스페이스 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

당신에게이 사실에 대해 정말 유감입니다. 하지만 코딩 할 때 upls가 내게 어떻게 말해 줄 수 있니? 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가로드 될 때 VM을 생성한다고 가정합니다. 당신이 그것을 만들 때 매개 변수를 ItemDetailsViewModel 생성자에 전달하고 있습니까? – Jason

+0

아니요. DetailItemPage가로드 될 때 VM을 만들지 않았습니다. 내 홈페이지에서 listview의 item_tapped 이벤트에 대해서만 DetailItemPage를 호출합니다. 도와주세요. 위 코드에서 작성한 코드를 작성했습니다. MVVM 개념의 초보자. 어떻게 그걸로 갈 생각이 없습니다. 이걸로 나를 도울 당신 정말로 친절합니다. – user1508599

관련 문제