C# 如何替换Activity use viewmodel中的片段

C# 如何替换Activity use viewmodel中的片段,c#,xamarin,mvvm,mvvmcross,viewmodel,C#,Xamarin,Mvvm,Mvvmcross,Viewmodel,我对Android使用Xamarin C#和MVVM Cross有问题。 程序创建主活动,但在使用ShowViewModel(TripsViewModel)时给出异常。在trips.xml中,我使用Mvx.MvxListView,因为这是一个动态列表视图。我不知道我有什么不好:(我看了好几页/教程,仍然有问题。也许我没有写什么东西 错误很少。如果我修复了一个,它将显示下一个:/ TripsViewModel.cs public class TripsViewModel : MvxViewMode

我对Android使用Xamarin C#和MVVM Cross有问题。 程序创建主活动,但在使用ShowViewModel(TripsViewModel)时给出异常。在trips.xml中,我使用Mvx.MvxListView,因为这是一个动态列表视图。我不知道我有什么不好:(我看了好几页/教程,仍然有问题。也许我没有写什么东西

错误很少。如果我修复了一个,它将显示下一个:/

TripsViewModel.cs

public class TripsViewModel : MvxViewModel
{
    private readonly IUserRepository _userRepository;
    private readonly ITripsRepository _tripsRepostitory;

    public TripsViewModel()
    {

    }

    private MvxObservableCollection<Trip> _searchTripsList;
    public MvxObservableCollection<Trip> SearchTripsList
    {
        get { return _searchTripsList; }
        set
        {
            _searchTripsList = value;
            RaisePropertyChanged(() => SearchTripsList);
        }
    }

    private Trip _selectedTrip;
    public Trip SelectedTrip
    {
        get { return _selectedTrip; }
        set
        {
            _selectedTrip = value;
            RaisePropertyChanged(() => SelectedTrip);
        }
    }

    public TripsViewModel(IUserRepository userRepository)
    {
        _userRepository = userRepository;
    }

    #endregion

    #region VM LifeCycle
    public void Init()
    {

    }

    public override void Start()
    {
        base.Start();
    }

    public void ReloadState(SavedState savedState)
    {

    }

    public SavedState SaveState()
    {
        return new SavedState() { };
    }

    public class SavedState{
        //add save state class
    }
    #endregion

}
public class MainViewModel : MvxViewModel
{
    private readonly Lazy<TripsViewModel> _tripsViewModel;
    public TripsViewModel TripsViewModel => _tripsViewModel.Value;

    public MainViewModel()
    {
        _tripsViewModel = new Lazy<TripsViewModel>(Mvx.IocConstruct<TripsViewModel>);
    }


    public void ShowMenu()
    {
        ShowViewModel<MenuViewModel>();
    }

    public void ShowTripsList()
    {
        ShowViewModel<TripsViewModel>();
    }

}
[MvxFragmentPresentationAttribute(typeof(MainViewModel), Resource.Id.content_frame, true)]
[Register("GTMS.MobileNative.Droid.Views.TripsListFragment")]
public class TripsListFragment : MvxFragment<TripsViewModel>
{

    public TripsListFragment()
    {

    }

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        base.OnCreateView(inflater, container, savedInstanceState);
        return this.BindingInflate(Resource.Layout.trips, container);
    }
}
[Activity(Label = "MainActivity", MainLauncher = true)]
public class MainActivity : MvxAppCompatActivity<MainViewModel>
{
    private BottomNavigationView bottomNavigation;
    private DrawerLayout _drawerLayout;
    internal DrawerLayout DrawerLayout { get { return _drawerLayout; } }

    private FragmentManager _fragmentManager;
    static MainActivity instance = new MainActivity();
    public static MainActivity CurrentActivity => instance;

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

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.main);
        _fragmentManager = FragmentManager;

        bottomNavigation = FindViewById<BottomNavigationView>(Resource.Id.bottom_navigation);
        bottomNavigation.NavigationItemSelected += NavigationItemSelected;


        /*zmiana pomiedzy fragmentami*/
        ViewModel.ShowTripsList();
        //ViewModel.NavigateToFragment(0);
        // Create your application here
    }

    private void NavigationItemSelected(object sender, BottomNavigationView.NavigationItemSelectedEventArgs e)
    {
        Android.Support.V4.App.Fragment fragment = null;
        switch (e.Item.ItemId)
        {
            case Resource.Id.menu_home:
                ViewModel.ShowTripsList();
                break;
            case Resource.Id.menu_audio:
                //fragment = Fragment2.NewInstance();
                break;
            case Resource.Id.menu_video:
               // fragment = Fragment3.NewInstance();
                break;
        }

        if (fragment == null)
            return;


    }
公共类TripsViewModel:MvxViewModel
{
专用只读IUserRepository\u userRepository;
专用只读ITripsRepository\u TripsReplicatory;
公共TripsViewModel()
{
}
私有MvxObservableCollection\u searchTripsList;
公共MvxObservableCollection SearchTripList
{
获取{return\u searchTripsList;}
设置
{
_searchTripsList=值;
RaisePropertyChanged(()=>SearchTripList);
}
}
私人旅行_选择Trip;
公共交通选择Trip
{
获取{return\u selectedTrip;}
设置
{
_selectedTrip=值;
RaisePropertyChanged(()=>SelectedTrip);
}
}
公共TripsViewModel(IUserRepository userRepository)
{
_userRepository=userRepository;
}
#端区
#区域虚拟机生命周期
公共void Init()
{
}
公共覆盖无效开始()
{
base.Start();
}
公共void重载状态(SavedState SavedState)
{
}
公共SavedState SaveState()
{
返回新的SavedState(){};
}
公共类存储状态{
//添加保存状态类
}
#端区
}
MainViewModel.cs

public class TripsViewModel : MvxViewModel
{
    private readonly IUserRepository _userRepository;
    private readonly ITripsRepository _tripsRepostitory;

    public TripsViewModel()
    {

    }

    private MvxObservableCollection<Trip> _searchTripsList;
    public MvxObservableCollection<Trip> SearchTripsList
    {
        get { return _searchTripsList; }
        set
        {
            _searchTripsList = value;
            RaisePropertyChanged(() => SearchTripsList);
        }
    }

    private Trip _selectedTrip;
    public Trip SelectedTrip
    {
        get { return _selectedTrip; }
        set
        {
            _selectedTrip = value;
            RaisePropertyChanged(() => SelectedTrip);
        }
    }

    public TripsViewModel(IUserRepository userRepository)
    {
        _userRepository = userRepository;
    }

    #endregion

    #region VM LifeCycle
    public void Init()
    {

    }

    public override void Start()
    {
        base.Start();
    }

    public void ReloadState(SavedState savedState)
    {

    }

    public SavedState SaveState()
    {
        return new SavedState() { };
    }

    public class SavedState{
        //add save state class
    }
    #endregion

}
public class MainViewModel : MvxViewModel
{
    private readonly Lazy<TripsViewModel> _tripsViewModel;
    public TripsViewModel TripsViewModel => _tripsViewModel.Value;

    public MainViewModel()
    {
        _tripsViewModel = new Lazy<TripsViewModel>(Mvx.IocConstruct<TripsViewModel>);
    }


    public void ShowMenu()
    {
        ShowViewModel<MenuViewModel>();
    }

    public void ShowTripsList()
    {
        ShowViewModel<TripsViewModel>();
    }

}
[MvxFragmentPresentationAttribute(typeof(MainViewModel), Resource.Id.content_frame, true)]
[Register("GTMS.MobileNative.Droid.Views.TripsListFragment")]
public class TripsListFragment : MvxFragment<TripsViewModel>
{

    public TripsListFragment()
    {

    }

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        base.OnCreateView(inflater, container, savedInstanceState);
        return this.BindingInflate(Resource.Layout.trips, container);
    }
}
[Activity(Label = "MainActivity", MainLauncher = true)]
public class MainActivity : MvxAppCompatActivity<MainViewModel>
{
    private BottomNavigationView bottomNavigation;
    private DrawerLayout _drawerLayout;
    internal DrawerLayout DrawerLayout { get { return _drawerLayout; } }

    private FragmentManager _fragmentManager;
    static MainActivity instance = new MainActivity();
    public static MainActivity CurrentActivity => instance;

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

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.main);
        _fragmentManager = FragmentManager;

        bottomNavigation = FindViewById<BottomNavigationView>(Resource.Id.bottom_navigation);
        bottomNavigation.NavigationItemSelected += NavigationItemSelected;


        /*zmiana pomiedzy fragmentami*/
        ViewModel.ShowTripsList();
        //ViewModel.NavigateToFragment(0);
        // Create your application here
    }

    private void NavigationItemSelected(object sender, BottomNavigationView.NavigationItemSelectedEventArgs e)
    {
        Android.Support.V4.App.Fragment fragment = null;
        switch (e.Item.ItemId)
        {
            case Resource.Id.menu_home:
                ViewModel.ShowTripsList();
                break;
            case Resource.Id.menu_audio:
                //fragment = Fragment2.NewInstance();
                break;
            case Resource.Id.menu_video:
               // fragment = Fragment3.NewInstance();
                break;
        }

        if (fragment == null)
            return;


    }
public类主视图模型:MvxViewModel
{
私有只读Lazy_tripsViewModel;
public TripsViewModel TripsViewModel=>\u TripsViewModel.Value;
公共主视图模型()
{
_tripsViewModel=新的惰性(Mvx.IocConstruct);
}
公共void ShowMenu()
{
ShowViewModel();
}
公开作废ShowTripsList()
{
ShowViewModel();
}
}
TripListFragment.cs

public class TripsViewModel : MvxViewModel
{
    private readonly IUserRepository _userRepository;
    private readonly ITripsRepository _tripsRepostitory;

    public TripsViewModel()
    {

    }

    private MvxObservableCollection<Trip> _searchTripsList;
    public MvxObservableCollection<Trip> SearchTripsList
    {
        get { return _searchTripsList; }
        set
        {
            _searchTripsList = value;
            RaisePropertyChanged(() => SearchTripsList);
        }
    }

    private Trip _selectedTrip;
    public Trip SelectedTrip
    {
        get { return _selectedTrip; }
        set
        {
            _selectedTrip = value;
            RaisePropertyChanged(() => SelectedTrip);
        }
    }

    public TripsViewModel(IUserRepository userRepository)
    {
        _userRepository = userRepository;
    }

    #endregion

    #region VM LifeCycle
    public void Init()
    {

    }

    public override void Start()
    {
        base.Start();
    }

    public void ReloadState(SavedState savedState)
    {

    }

    public SavedState SaveState()
    {
        return new SavedState() { };
    }

    public class SavedState{
        //add save state class
    }
    #endregion

}
public class MainViewModel : MvxViewModel
{
    private readonly Lazy<TripsViewModel> _tripsViewModel;
    public TripsViewModel TripsViewModel => _tripsViewModel.Value;

    public MainViewModel()
    {
        _tripsViewModel = new Lazy<TripsViewModel>(Mvx.IocConstruct<TripsViewModel>);
    }


    public void ShowMenu()
    {
        ShowViewModel<MenuViewModel>();
    }

    public void ShowTripsList()
    {
        ShowViewModel<TripsViewModel>();
    }

}
[MvxFragmentPresentationAttribute(typeof(MainViewModel), Resource.Id.content_frame, true)]
[Register("GTMS.MobileNative.Droid.Views.TripsListFragment")]
public class TripsListFragment : MvxFragment<TripsViewModel>
{

    public TripsListFragment()
    {

    }

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        base.OnCreateView(inflater, container, savedInstanceState);
        return this.BindingInflate(Resource.Layout.trips, container);
    }
}
[Activity(Label = "MainActivity", MainLauncher = true)]
public class MainActivity : MvxAppCompatActivity<MainViewModel>
{
    private BottomNavigationView bottomNavigation;
    private DrawerLayout _drawerLayout;
    internal DrawerLayout DrawerLayout { get { return _drawerLayout; } }

    private FragmentManager _fragmentManager;
    static MainActivity instance = new MainActivity();
    public static MainActivity CurrentActivity => instance;

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

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.main);
        _fragmentManager = FragmentManager;

        bottomNavigation = FindViewById<BottomNavigationView>(Resource.Id.bottom_navigation);
        bottomNavigation.NavigationItemSelected += NavigationItemSelected;


        /*zmiana pomiedzy fragmentami*/
        ViewModel.ShowTripsList();
        //ViewModel.NavigateToFragment(0);
        // Create your application here
    }

    private void NavigationItemSelected(object sender, BottomNavigationView.NavigationItemSelectedEventArgs e)
    {
        Android.Support.V4.App.Fragment fragment = null;
        switch (e.Item.ItemId)
        {
            case Resource.Id.menu_home:
                ViewModel.ShowTripsList();
                break;
            case Resource.Id.menu_audio:
                //fragment = Fragment2.NewInstance();
                break;
            case Resource.Id.menu_video:
               // fragment = Fragment3.NewInstance();
                break;
        }

        if (fragment == null)
            return;


    }
[MvxFragmentPresentationAttribute(typeof(MainViewModel),Resource.Id.content\u frame,true)]
[注册表(“GTMS.mobilenactive.Droid.Views.TripsListFragment”)]
公共类TripsListFragment:MvxFragment
{
公共TripsListFragment()
{
}
创建视图上的公共覆盖视图(布局、充气机、视图组容器、捆绑包保存状态)
{
base.OnCreateView(充气机、容器、保存状态);
返回此.BindingInflate(Resource.Layout.trips,container);
}
}
MainActivity.cs

public class TripsViewModel : MvxViewModel
{
    private readonly IUserRepository _userRepository;
    private readonly ITripsRepository _tripsRepostitory;

    public TripsViewModel()
    {

    }

    private MvxObservableCollection<Trip> _searchTripsList;
    public MvxObservableCollection<Trip> SearchTripsList
    {
        get { return _searchTripsList; }
        set
        {
            _searchTripsList = value;
            RaisePropertyChanged(() => SearchTripsList);
        }
    }

    private Trip _selectedTrip;
    public Trip SelectedTrip
    {
        get { return _selectedTrip; }
        set
        {
            _selectedTrip = value;
            RaisePropertyChanged(() => SelectedTrip);
        }
    }

    public TripsViewModel(IUserRepository userRepository)
    {
        _userRepository = userRepository;
    }

    #endregion

    #region VM LifeCycle
    public void Init()
    {

    }

    public override void Start()
    {
        base.Start();
    }

    public void ReloadState(SavedState savedState)
    {

    }

    public SavedState SaveState()
    {
        return new SavedState() { };
    }

    public class SavedState{
        //add save state class
    }
    #endregion

}
public class MainViewModel : MvxViewModel
{
    private readonly Lazy<TripsViewModel> _tripsViewModel;
    public TripsViewModel TripsViewModel => _tripsViewModel.Value;

    public MainViewModel()
    {
        _tripsViewModel = new Lazy<TripsViewModel>(Mvx.IocConstruct<TripsViewModel>);
    }


    public void ShowMenu()
    {
        ShowViewModel<MenuViewModel>();
    }

    public void ShowTripsList()
    {
        ShowViewModel<TripsViewModel>();
    }

}
[MvxFragmentPresentationAttribute(typeof(MainViewModel), Resource.Id.content_frame, true)]
[Register("GTMS.MobileNative.Droid.Views.TripsListFragment")]
public class TripsListFragment : MvxFragment<TripsViewModel>
{

    public TripsListFragment()
    {

    }

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        base.OnCreateView(inflater, container, savedInstanceState);
        return this.BindingInflate(Resource.Layout.trips, container);
    }
}
[Activity(Label = "MainActivity", MainLauncher = true)]
public class MainActivity : MvxAppCompatActivity<MainViewModel>
{
    private BottomNavigationView bottomNavigation;
    private DrawerLayout _drawerLayout;
    internal DrawerLayout DrawerLayout { get { return _drawerLayout; } }

    private FragmentManager _fragmentManager;
    static MainActivity instance = new MainActivity();
    public static MainActivity CurrentActivity => instance;

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

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.main);
        _fragmentManager = FragmentManager;

        bottomNavigation = FindViewById<BottomNavigationView>(Resource.Id.bottom_navigation);
        bottomNavigation.NavigationItemSelected += NavigationItemSelected;


        /*zmiana pomiedzy fragmentami*/
        ViewModel.ShowTripsList();
        //ViewModel.NavigateToFragment(0);
        // Create your application here
    }

    private void NavigationItemSelected(object sender, BottomNavigationView.NavigationItemSelectedEventArgs e)
    {
        Android.Support.V4.App.Fragment fragment = null;
        switch (e.Item.ItemId)
        {
            case Resource.Id.menu_home:
                ViewModel.ShowTripsList();
                break;
            case Resource.Id.menu_audio:
                //fragment = Fragment2.NewInstance();
                break;
            case Resource.Id.menu_video:
               // fragment = Fragment3.NewInstance();
                break;
        }

        if (fragment == null)
            return;


    }
[活动(Label=“MainActivity”,MainLauncher=true)]
公共类MainActivity:MvxAppCompatActivity
{
私有底部导航查看底部导航;
私人抽屉布局_抽屉布局;
内部抽屉布局抽屉布局{get{return}
私人碎片管理器\u碎片管理器;
静态MainActivity实例=新的MainActivity();
公共静态MainActivity CurrentActivity=>instance;
公共新主视图模型视图模型
{
获取{return(MainViewModel)base.ViewModel;}
设置{base.ViewModel=value;}
}
创建时受保护的覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.main);
_fragmentManager=fragmentManager;
bottomNavigation=findviewbyd(Resource.Id.bottom\u navigation);
bottomNavigation.NavigationItemSelected+=NavigationItemSelected;
/*波米耶兹碎片*/
ViewModel.ShowTripsList();
//ViewModel.NavigateToFragment(0);
//在此处创建应用程序
}
private void NavigationItemSelected(对象发送方,底部导航视图。导航项SelectedEventArgs e)
{
Android.Support.V4.App.Fragment Fragment=null;
开关(例如Item.ItemId)
{
案例资源.Id.menu\u主页:
ViewModel.ShowTripsList();
打破
案例资源.Id.menu\u音频:
//fragment=Fragment2.NewInstance();
打破
案例资源.Id.menu\u视频:
//fragment=Fragment3.NewInstance();
打破
}
if(片段==null)
返回;
}