コード例 #1
0
        protected override async Task <Boolean> ShowContentView(FrameworkElement element, MvxContentPresentationAttribute attribute, MvxViewModelRequest request)
        {
            try
            {
                // Everything that passes here should be a view
                IMvxView    view    = element as IMvxView;
                IMesManager manager = Mvx.IoCProvider.Resolve <IMesManager>();

                // from which we can now get the view model.
                switch (view.ViewModel)
                {
                case IMesDocument document:

                    // Try to set view, this is needed for DocumentManager
                    IMesDocument docViewModel = (IMesDocument)view.ViewModel;
                    docViewModel.View = view;     // Needed for Binding with AvalonDock
                    docViewModel.ViewAppearing();
                    docViewModel.ViewAppeared();

                    // Add to manager model
                    manager.Documents.Add(docViewModel);
                    _log.Trace($"Add {document.ToString()} to IManager.Documents");
                    return(true);

                case IMesTool tool:
                    // Try to set view, this is needed for DocumentManager
                    IMesTool toolViewModel = (IMesTool)view.ViewModel;
                    toolViewModel.View = view;     // Needed for Binding with AvalonDock
                    toolViewModel.ViewAppearing();
                    toolViewModel.ViewAppeared();

                    // Add to manager model
                    manager.Tools.Add(toolViewModel);
                    _log.Trace($"Add {tool.ToString()} to IManager.Tools");
                    return(true);

                default:
                    _log.Trace($"Passing to parent {view.ViewModel.ToString()}");
                    return(await base.ShowContentView(element, attribute, request));
                }
            }
            catch (Exception exception)
            {
                if (_log == null)
                {
                    _log = Mvx.IoCProvider.Resolve <IMvxLog>();
                }
                _log.ErrorException("Error seen during navigation request to {0} - error {1}",
                                    exception, request.ViewModelType.Name, exception.ToLongString());
                return(false);
            }
        }
 public void Populate(MesCommand command, List <MesCommand> commands)
 {
     for (Int32 i = 0; i < _shell.Documents.Count; i++)
     {
         IMesDocument document = _shell.Documents[i];
         commands.Add(new MesCommand(command.CommandDefinition)
         {
             Checked = _shell.ActiveItem == document,
             Text    = String.Format("_{0} {1}", i + 1, document.DisplayName),
             Tag     = document
         });
     }
 }
コード例 #3
0
 public static MesOpenDocumentResult Document(IMesDocument document) => new MesOpenDocumentResult(document);