在过去的几周里,我一直在使用 MVVMCross 框架开发一个跨平台应用程序(IOS/Android/WP7)。今天我遇到了一个我真的不知道如何解决的问题,所以希望你能把我推向正确的方向。
在 IOS 中,我有以下结构用于导航到另一个页面(下面的代码位于 ViewModel 中):
KeyValuePair<string,string> kvpAct1 = new KeyValuePair<string, string>("short", ".countertest5");
public IMvxCommand BeckhoffActuator1
{
get
{
return new MvxRelayCommand<Type>((type) => this.RequestNavigate<Beckhoff.BeckhoffActuatorViewModel>(kvpAct1));
}
}
当这个 IMvxCommand 被触发(按下按钮)时,下一个视图被加载,在本例中是 BeckhoffActuatorViewModel。在 BeckhoffActuatorView 的代码中,我使用了上面的键值对:
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 中运行良好,但我想在我的 android 应用程序中使用相同的结构。
ViewModel 中的代码没有改变,因为这就是 MVVM 的全部理念。但是对于 Android,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 发送的键值对?谢谢!