지난 몇 주 동안 저는 MVVMCross 프레임 워크를 사용하여 크로스 플랫폼 앱 (IOS/Android/WP7)을 개발하는 중이었습니다. 오늘 나는 문제를 겪었는데, 나는 어떻게 풀어야 할지를 정말로 모른다. 그래서 희망을 갖고 나를 올바른 방향으로 밀어 넣을 수있다. IOS가에서ViewModel에서 다른보기 (MVVMCross)로 변수 전달하기
내가 (코드는 아래의 ViewModel에 있습니다) 다른 페이지로 이동을 위해 건설을 다음 있습니다 :
이 IMvxCommand 해고되어KeyValuePair<string,string> kvpAct1 = new KeyValuePair<string, string>("short", ".countertest5");
public IMvxCommand BeckhoffActuator1
{
get
{
return new MvxRelayCommand<Type>((type) => this.RequestNavigate<Beckhoff.BeckhoffActuatorViewModel>(kvpAct1));
}
}
(버튼을 누를 때) 다음보기가로드, 이 경우 BeckhoffActuatorViewModel.
public class BeckhoffActuatorView : MvxTouchDialogViewController<BeckhoffActuatorViewModel>
{
ICollection<string> icol;
public BeckhoffActuatorView(MvxShowViewModelRequest request) : base(request, UITableViewStyle.Grouped, null, true)
{
icol = request.ParameterValues.Values;
}
public override void ViewDidLoad()
{
//Code
}
}
이 건설 IOS에서 잘 작동하지만, 나는 내 안드로이드 응용 프로그램에서 동일한 구성을 사용하고자하는 다음 BeckhoffActuatorView의 코드에서 나는 위에서 keyvaluepair를 사용합니다.
ViewModel의 코드는 MVVM의 전체적인 아이디어이므로 변경되지 않았습니다. 그러나 BackhoffActuatorView의 코드는 안드로이드에 대한 다른 : 위의 코드는 작동하지 않습니다
public class BeckhoffActuatorView : MvxBindingActivityView<BeckhoffSensorViewModel>
{
public ICollection<string> icol;
public BeckhoffActuatorView()
{
Debug.WriteLine("Standard");
}
public BeckhoffActuatorView(MvxShowViewModelRequest request)
{
Debug.WriteLine("Custom");
icol = request.ParameterValues.Values;
}
protected override void OnViewModelSet()
{
SetContentView(Resource.Layout.BeckhoffActuatorView);
}
}
의 MvxBindingActivityView 내가 IOS에서 사용하는의 ViewController 비슷한을 구현하지 않는 것 같습니다. 이 코드는 표준 생성자에만 들어 있으며, 그 코드를 완전히 그대로두면 컴파일되지 않습니다.
누구나 내가 RequestNavigate와 함께 보내는 keyvalue 쌍을 액세스 할 수 있다는 것을 알고 있습니까? 고맙습니다!
스튜어트에게 트위터 예를 사용하여 문제를 해결할 수있었습니다. – David
좋은 직장 - 매개 변수 전달의 또 다른 예제가 필요하면 CustomerManagement 및 Books 샘플도 시도해보십시오 :) – Stuart