2013-08-19 46 views
2

有没有关于如何使用Xavrin的FlyoutNavigation组件使用MvvmCross的示例。MvvmCross:如何在MvvmCross中使用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; 
    } 
} 

回答

4

试试这个例子https://github.com/fcaico/MvxSlidingPanels.Touch这是基于组件

+0

嘿的一个分支 - 这可能与对话使用它?我看到代码使用了一个MvxTouchViewPresenter - 我对此不熟悉 - 今天将会看到它 - 想知道如果您至少可以通过发信号告诉我一个开头的东西吗? – iwayneo