2014-06-05 5 views
1

showvideo_model 메서드를 호출하여 모델에서 탐색을 수행 한 후 mvvmcross에서 데이터 바인딩 문제가 있습니다. 안드로이드 측면에서 작동합니다.MVVMCROSS Ios 바인딩 ShowViewModel

그래서 문제는 탐색 자체가 작동하지만 모델에서 데이터를 가져 오지 않는다는 것입니다. 모델의

탐색 :

ShowViewModel<TeamEventDetailsViewModel>(new { eventID = item.ID }); 

의 ViewModel 데이터를 containts : 당신이 바닥에서 볼 수 있듯이

public class TeamEventDetailsViewModel 
     : EventDetailsViewModel 
    { 
     public TeamEventModel CurrentEvent 
     { 
      get { return MyCurrentEvent as TeamEventModel; } 
      set 
      { 
       MyCurrentEvent = value; 
       RaisePropertyChanged(() => CurrentEvent); 
       TickerModel.Comments = value.Comments; 
       RaisePropertyChanged(() => TickerModel); 
       LineupModel.Team1Players = value.Team1Players; 
       LineupModel.Team2Players = value.Team2Players; 
       RaisePropertyChanged(() => LineupModel); 
      } 
     } 

     private EventDetailsLineupViewModel _lineupModel = new EventDetailsLineupViewModel(); 
     public EventDetailsLineupViewModel LineupModel 
     { 
      get { return _lineupModel; } 
      set { _lineupModel = value; RaisePropertyChanged(() => LineupModel); } 
     } 

     public TeamEventDetailsViewModel() 
     { 
      EventToken = MvxMessenger.Subscribe<EventUpdateMessage>(OnEventUpdateMessage); 
     } 

     private void OnEventUpdateMessage(EventUpdateMessage eventUpdate) 
     { 
      if (MyCurrentEvent != null && eventUpdate.Event.ID == MyCurrentEvent.ID) 
      { 
       var updatedEvent = (TeamEventModel)eventUpdate.Event; 
       var myEvent = CurrentEvent; 
       if(updatedEvent.Score!=null) 
        myEvent.Score = updatedEvent.Score; 
       if (updatedEvent.Team1Players != null) 
        myEvent.Team1Players = updatedEvent.Team1Players; 
       if (updatedEvent.Team2Players != null) 
        myEvent.Team2Players = updatedEvent.Team2Players; 

       CurrentEvent = myEvent; 
      } 
     } 

     protected override void Update(EventModel eventdetails) 
     { 
      CurrentEvent = (TeamEventModel) eventdetails; 
     } 

     private string _teststring = "success"; 

     public string Teststring 
     { 
      get { return _teststring; } 
      set 
      { 
       _teststring = value; 
       RaisePropertyChanged(()=>_teststring); 
      } 
     } 
    } 

나는 기능을 증명하기 위해 TestString에 구현. ,

public class TeamEventDetailsView : MvxViewController 
    { 

     public UILabel TestLabel = new UILabel(); 

     public TeamEventDetailsViewModel TeamEventDetailsViewModel 
     { 
      get { return (TeamEventDetailsViewModel)base.ViewModel; } 
      set { base.ViewModel = value; } 
     } 

     public override void ViewDidLoad() 
     { 
      View.AddSubview(TestLabel); 


      this.CreateBinding(TestLabel).To<TeamEventDetailsViewModel>(vm => vm.Teststring).Apply(); 

      TestLabel.BackgroundColor = UIColor.Orange; 

     }   

     public override void ViewDidLayoutSubviews() 
     { 
      base.ViewDidLayoutSubviews(); 
      TestLabel.Frame=new RectangleF(0,20,View.Frame.Width,80); 
     } 
    } 

그래서 나는 반복 자체가 작동 탐색을하지만 모델의 데이터 뷰에 표시되지 않습니다

보기에 바인딩.

뷰에서 수동으로 ViewModel을 작성하면 바인딩도 작동하지만 내비게이션을 호출하는 ViewModel에서 생성 된 데이터에 따라 데이터가 추출되기 때문에 제 상황에서는이를 수행 할 수 없습니다.

매뉴얼의 ViewModel : 내가 말할 수있는 Stuard 자신의 튜토리얼에서와 같이

TeamEventDetailsViewModel = new TeamEventDetailsViewModel(); 
TeamEventDetailsViewModel.Init(9816); 

내가 정확히 동일한했다 :

https://www.youtube.com/watch?v=cbdPDZmuHk8

이 사람이 나를 위해 조언을 가지고 있습니까? 감사합니다. .

+0

아무것도 작동해야 당신이 당신의 ViewDidLoad 재정에 그 전화를 추가하면? – PkL728

+0

불행히도. –

+0

나는 안드로이드/WinRT에서 지금 당장로드가 끝난 직후에 물건을 부 풀릴 곳을 알아 내려고 노력해 왔으며, 궁금한 점이 있다고 생각합니다. 감사! –

답변

2

MvvmCross는 뷰 모델은 base.ViewDidLoad()에서 만든 않습니다 - 다음 모든 디버그 추적 이상한 확인

+0

Stuart에게 감사드립니다. mvvmcross의 왕 이십니다. :-) –

+0

showviewmodel-navigation을 사용하지 않을 때 런타임 예외가 발생하는 이유는 무엇입니까? Normaly는 예외를 만들기 때문에 base.viewdidload()를 삭제합니다. 이 두 문제 사이에 어떤 관련이 있습니까? –

관련 문제