public ScrollViewer PutView(IDocumentView DocView)
        {
            General.ContractRequiresNotNull(DocView);

            Grid         HostingGridPanel = null;
            ScrollViewer ScrollPresenter  = null;
            var          Target           = FindTabItem(DocView.GlobalId);

            if (Target == null)
            {
                Target            = new TabItem();
                Target.Background = Brushes.WhiteSmoke;
                Target.Tag        = DocView.GlobalId;

                ScrollPresenter = new ScrollViewer();
                ScrollPresenter.ScrollChanged     += new ScrollChangedEventHandler(ScrollPresenter_ScrollChanged);
                ScrollPresenter.PreviewMouseWheel += new MouseWheelEventHandler(ScrollPresenter_PreviewMouseWheel);
                ScrollPresenter.PreviewKeyDown    += ((sdr, args) => args.Handled = ((CompositionEngine)DocView.EditEngine).ReactToKeyDown(args.Key));
                ScrollPresenter.Margin             = new Thickness(1);

                ScrollPresenter.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
                ScrollPresenter.VerticalScrollBarVisibility   = ScrollBarVisibility.Auto;

                // Avoids the ugly dotted border to appear (even over the menu-bar)
                ScrollPresenter.FocusVisualStyle = null;

                HostingGridPanel = new Grid();

                DocView.PresenterHostingGrid = HostingGridPanel;

                Target.Content = HostingGridPanel;
                HostingGridPanel.Children.Add(ScrollPresenter);
                HostingGridPanel.Children.Add(DocView.TopCanvas);

                this.ViewsTab.Items.Add(Target);
                this.RegisteredViews.Add(DocView);

                DocView.HostingScrollViewer = ScrollPresenter;

                // IMPORTANT: This is intended to detect when the View (plus its HostingScrollViewer) is discarded via Undo.
                //            Therefore, no other properties can be trusted to be populated anymore (such as Name or GlobalId).
                DocView.PropertyChanged +=
                    ((sdr, args) =>
                {
                    if (args.PropertyName == View.__HostingScrollViewer.TechName &&
                        DocView.HostingScrollViewer == null)
                    {
                        DiscardViewControls(Target, true);

                        DocView.PropertyChanged -= DocView_PropertyChanged;
                        this.RegisteredViews.Remove(DocView);
                    }
                });
            }
            else
            {
                HostingGridPanel = (Grid)Target.Content;

                ScrollPresenter = (ScrollViewer)HostingGridPanel.Children[0];

                DocView.PropertyChanged -= DocView_PropertyChanged;

                DocView.HostingScrollViewer = ScrollPresenter;
            }

            DocView.HostingScrollViewer.Background = DocView.GetBackgroundImageBrush();

            // IMPORTANT: This cannot be null, because hit-testing does not work if no brush is present (must be at least transparent, better white).
            HostingGridPanel.Background = DocView.BackgroundWorkingBrush;   //T Display.GetGradientBrush(Colors.Azure, Colors.DodgerBlue, Colors.LightGreen)

            Target.Header            = DocView.Title;
            Target.MouseDoubleClick += Target_MouseDoubleClick;

            if (DocView.PresenterControl == null)
            {
                throw new UsageAnomaly("Cannot show Document content because its View has no Presenter Control.", DocView);
            }

            // If pointing to an already opened tab...
            if (DocView.PresenterControl.Parent != null)
            {
                Target.IsSelected        = true;
                DocView.PropertyChanged += DocView_PropertyChanged;
                return(ScrollPresenter);
            }

            // Assignments for new tab...
            ScrollPresenter.Content      = DocView.PresenterControl;
            DocView.PresenterHostingGrid = HostingGridPanel;

            DocView.PresenterControl.PostCall((DocViewvpres) =>
            {
                /*- var FactorX = (DocView.PageDisplayScale / 100.0);
                 * var FactorY = (DocView.PageDisplayScale / 100.0); */

                //- var FactorX = DocView.HostingScrollViewer.ExtentWidth / DocView.PresenterControl.ActualWidth.NaNDefault(1.0).EnforceMinimum(1.0);
                //- var FactorY = DocView.HostingScrollViewer.ExtentHeight / DocView.PresenterControl.ActualHeight.NaNDefault(1.0).EnforceMinimum(1.0);

                DocView.HostingScrollViewer.ScrollToHorizontalOffset(DocView.LastScrollOffset.X /*- * FactorX*/);
                DocView.HostingScrollViewer.ScrollToVerticalOffset(DocView.LastScrollOffset.Y /*- * FactorY*/);

                //T Console.WriteLine("VPW={0}, VPH={1}, CX={2}, CY={3}", src.ViewportWidth, src.ViewportHeight, DocView.ViewCenter.X, DocView.ViewCenter.Y);
            });

            Target.IsSelected        = true;
            DocView.PropertyChanged += DocView_PropertyChanged;

            return(ScrollPresenter);
        }