相关疑难解决方法(0)

v3中导航参数中的自定义类型

在v3中,如果我想将两个对象传递给另一个viewmodel:

public class Dog
{

}

public class Cat
{

}

var dog = new Dog();
var cat = new Cat();

ShowViewModel<SomeViewModel>(new {Dog = dog, Cat = cat });

public class SomeViewModel
{
  Init(Dog dog, Cat cat)
  {
  }
}
Run Code Online (Sandbox Code Playgroud)

据我所知,这是行不通的,因为类型不被识别,不能卡在字典中.如果我希望将这些序列化为json,传递给视图模型,并反序列化为Init参数,我会实现IExtraParser吗?如果这是正确的,我该如何将实现添加到ExtraParsers字典?

更新:

这似乎是这样做的:

var foo = Mvx.Resolve<IMvxFillableStringToTypeParser>();
foo.ExtraParsers.Add(new MyParser());
Run Code Online (Sandbox Code Playgroud)

mvvmcross

5
推荐指数
1
解决办法
6391
查看次数

在mvvmcross中的视图模型之间传递多态类型

我有两个按钮,它们都显示一个新的视图模型,但是传递给viewmodel的数据不同.传递的数据并不完全不同,因此它们都从相同的基础继承.不幸的是,似乎传递给viewmodel的Init()方法的数据在途中丢失了它的运行时类型信息?使用调试器(或代码),传递的数据仅被识别为基类 - 而不是实际构造并传递给ShowViewModel <>()方法的派生类.

是什么我试图不可能?

public class BasePasser
{

}

public class PasserA : BasePasser
{

}

public class PasserB : BasePasser
{

}


public class ViewModelOne : MvxViewModel
{
    // ...
    private void DoSwitchViewModelA()
    {
        var tobepassed = new PasserA {
            // ...
            };

        ShowViewModel<ViewModelTwo>(tobepassed);
    }

    private void DoSwitchViewModelB()
    {
        var tobepassed = new PasserB {
            // ...
            };

        ShowViewModel<ViewModelTwo>(tobepassed);
    }
}

public class ViewModelTwo : MvxViewModel
{
    // ...
    public async Task Init(BasePasser passed)
    {
        if(passed …
Run Code Online (Sandbox Code Playgroud)

c# android mvvmcross xamarin

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

在MVVMCross中将参数从Main传递给Detail

我试图将所选项目从列表传递到详细信息视图,但即使它不在,也myitem为空.DetailViewmodelMyViewModel

MyViewModel.cs

    public virtual ICommand ItemSelected
    {
        get
        {
            return new MvxCommand<MyViewModel>(item =>{SelectedItem = item;});
        }
     }

    public MyViewModel SelectedItem
    {
        get { return _selectedItem; }
        set
        {
            _selectedItem = value;
            // myItem is NOT null here!!!
            ShowViewModel<MyDetailViewModel>(new { date = Date, myItem = _selectedItem });
            RaisePropertyChanged(() => SelectedItem);
        }
    }
Run Code Online (Sandbox Code Playgroud)

MyDetailViewModel.cs

public class  MyDetailViewModel: MvxViewModel
{
    private MyViewModel _myItem;

    public void Init(DateTime date, MyViewModel myItem = null)
    {
        // myItem is NULL here!!!
        _myItem = …
Run Code Online (Sandbox Code Playgroud)

c# mvvmcross xamarin

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

标签 统计

mvvmcross ×3

c# ×2

xamarin ×2

android ×1