MvvmCross:如何在MvvmCross中使用FlyoutNavigation组件

3
有没有使用MvvmCross与Xamarin的FlyoutNavigation组件的示例。
当我尝试使用MainNavigationViewModel中的菜单视图设置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;
    }
}
1个回答

4

嘿,这个能和Dialog一起使用吗?我看到代码使用了MvxTouchViewPresenter - 我不熟悉它 - 今天会去看一下 - 想知道你是否可以提前告诉我它是否至少是可能的? - user156888

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接