小编Dav*_*vid的帖子

将变量从ViewModel传递到另一个视图(MVVMCross)

在过去的几周里,我一直在使用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));
    }
}
Run Code Online (Sandbox Code Playgroud)

当触发此IMvxCommand(按下按钮)时,将加载下一个View,在本例中为BeckhoffActuatorViewModel.在BeckhoffActuatorView的代码中,我使用上面的keyvaluepair:

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
    }
}
Run Code Online (Sandbox Code Playgroud)

这种结构在IOS中运行良好,但我想在我的Android应用程序中使用相同的结构.

ViewModel中的代码没有改变,因为这是MVVM的整体思想.但BackhoffActuatorView的代码与Android不同:

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 …
Run Code Online (Sandbox Code Playgroud)

c# android xamarin.ios xamarin.android mvvmcross

8
推荐指数
1
解决办法
9239
查看次数

标签 统计

android ×1

c# ×1

mvvmcross ×1

xamarin.android ×1

xamarin.ios ×1