• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - MvvmCross:如何将 FlyoutNavigation 组件与 MvvmCross 一起使用

[复制链接]
菜鸟教程小白 发表于 2022-12-13 03:38:18 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

有没有关于如何将 MvvmCross 与 Xamarin 的 FlyoutNavigation 组件一起使用的示例。

当我尝试使用 MainNavigationViewModel 中的菜单 View 设置 ViewControllers 时出现错误。这是我得到的错误“System.Reflection.TargetInvocationException:调用的目标已引发异常。”

这是我的示例代码:

public class MainNavigationViewModel : MvxViewModel
{
    public MainNavigationViewModel()
    {
        MenuOne = new MenuOneViewModel();
    }

    private MenuOne _MenuOne;

    public MenuOneViewModel MenuOne
    {
        get { return _MenuOne; }
        set
        {
            _MenuOne = value;
            RaisePropertyChanged(() => MenuOne);
        }
    }
}


[Register("MainNavigationView")]
public sealed class MainNavigationView : MvxViewController
{
    protected MainNavigationViewModel MainNavViewModel
    { get { return base.ViewModel as MainNavigationViewModel; } }

    public MainNavigationView()
    {
        ViewDidLoad();
    }

    public override void ViewWillAppear(bool animated)
    {
        base.ViewWillAppear(animated);
        NavigationController.NavigationBarHidden = true;
    }

    public override void ViewDidLoad()
    {
        base.ViewDidLoad();

        if (ViewModel == null)
            return;

        var flyoutNavigationController = new FlyoutNavigationController();

        var menuViewRoot = new RootElement(null);

        var menuItems = new List<StringElement>()
            {
                new StringElement("Menu One")
            };

        var menuSection = new Section("Main Menu") { menuItems };
        menuViewRoot.Add(menuSection);

        flyoutNavigationController.NavigationRoot = menuViewRoot;

        var viewControllers = new UIViewController[1];
        viewControllers[0] = CreateMenuItemController(MainNavViewModel.MainOne);
        flyoutNavigationController.ViewControllers = viewControllers;

        flyoutNavigationController.View.Frame = UIScreen.MainScreen.Bounds;
        flyoutNavigationController.ToggleMenu();
        Add(flyoutNavigationController.View);
    }

    private UIViewController CreateMenuItemController(IMvxViewModel viewModel)
    {
        var controller = new UINavigationController();
        var screen = this.CreateViewControllerFor(viewModel) as UIViewController;
        controller.PushViewController(screen, false);
        return controller;
    }
}



Best Answer-推荐答案


试试这个例子 https://github.com/fcaico/MvxSlidingPanels.Touch它基于该组件的一个分支

关于ios - MvvmCross:如何将 FlyoutNavigation 组件与 MvvmCross 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18324740/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap