Esempio n. 1
0
        public override void Instantiate()
        {
            base.Instantiate();
            this.RichTextBox.VerticalScrollBarVisibility = ScrollBarVisibility.Disabled;
            this.RichTextBox.SetValue(this.EditingElement.Platform.Metadata.DefaultTypeResolver, ControlElement.ForegroundProperty, this.TextSource.GetComputedValueAsWpf(TextBlockElement.ForegroundProperty));
            if (this.EditingElement.Platform.Metadata.ResolveProperty(TextBlockElement.BackgroundProperty) != null)
            {
                this.RichTextBox.SetValue(this.EditingElement.Platform.Metadata.DefaultTypeResolver, ControlElement.BackgroundProperty, this.TextSource.GetComputedValueAsWpf(TextBlockElement.BackgroundProperty));
            }
            TextAlignment            textAlignment        = (TextAlignment)this.TextSource.GetComputedValueAsWpf(TextBlockElement.TextAlignmentProperty);
            TextDecorationCollection decorationCollection = (TextDecorationCollection)this.TextSource.GetComputedValueAsWpf(TextBlockElement.TextDecorationsProperty);
            Paragraph paragraph = (Paragraph)((FlowDocument)this.RichTextBox.Document.PlatformSpecificObject).Blocks.FirstBlock;

            paragraph.TextAlignment   = textAlignment;
            paragraph.TextDecorations = decorationCollection;
            if (this.TextSource.IsSet(TextBlockElement.TextProperty) == PropertyState.Set)
            {
                Run run = new Run((string)this.TextSource.GetComputedValue(TextBlockElement.TextProperty));
                run.FlowDirection = (FlowDirection)FrameworkElement.FlowDirectionProperty.DefaultMetadata.DefaultValue;
                paragraph.Inlines.Add((Inline)run);
            }
            else if (this.TextSource.IsSet(TextBlockElement.InlinesProperty) == PropertyState.Set)
            {
                DocumentNodePath pathInContainer = this.TextSource.DocumentNodePath.GetPathInContainer(((DocumentCompositeNode)this.TextSource.DocumentNode).Properties[TextBlockElement.InlinesProperty]);
                SceneViewModel   viewModel       = this.TextSource.ViewModel;
                IDocumentContext documentContext = viewModel.Document.DocumentContext;
                if (!viewModel.ProjectContext.IsCapabilitySet(PlatformCapability.IsWpf))
                {
                    foreach (SceneNode sceneNode in (IEnumerable <SceneNode>) this.TextSource.GetCollectionForProperty(TextBlockElement.InlinesProperty))
                    {
                        Inline inline = this.TextSource.ViewModel.DefaultView.ConvertToWpfValue((object)sceneNode.DocumentNode) as Inline;
                        if (inline != null)
                        {
                            paragraph.Inlines.Add(inline);
                        }
                    }
                }
                else
                {
                    using (InstanceBuilderContext instanceBuilderContext = new InstanceBuilderContext(viewModel.ProjectContext, viewModel, true, (Microsoft.Expression.DesignModel.DocumentModel.DocumentNode)null))
                    {
                        using (instanceBuilderContext.DisablePostponedResourceEvaluation())
                        {
                            instanceBuilderContext.ViewNodeManager.RootNodePath  = pathInContainer;
                            instanceBuilderContext.ViewNodeManager.Root.Instance = (object)paragraph.Inlines;
                            instanceBuilderContext.ViewNodeManager.Instantiate(instanceBuilderContext.ViewNodeManager.Root);
                        }
                        this.UpdateUIChildrenInstances((IInstanceBuilderContext)instanceBuilderContext);
                    }
                }
            }
            if (this.ForceLoadOnInstantiate)
            {
                this.EditingElement.UpdateLayout();
                this.AdjustPadding();
            }
            else
            {
                this.RichTextBox.Loaded += new RoutedEventHandler(this.RichTextBox_Loaded);
            }
            if (this.TextSource.ViewModel.ProjectContext.IsCapabilitySet(PlatformCapability.SupportsTabInTextControl))
            {
                RichTextBox richTextBox = this.RichTextBox.PlatformSpecificObject as RichTextBox;
                if (richTextBox != null)
                {
                    richTextBox.AddHandler(CommandManager.PreviewCanExecuteEvent, (Delegate) new CanExecuteRoutedEventHandler(TextBlockEditProxy.CanExecute));
                }
            }
            this.RichTextBox.SelectionChanged += new RoutedEventHandler(this.RichTextBox_SelectionChanged);
        }
        public override void Instantiate()
        {
            base.Instantiate();
            this.CopyProperty(RichTextBoxElement.VerticalScrollBarVisibilityProperty);
            this.CopyProperty(RichTextBoxElement.HorizontalScrollBarVisibilityProperty);
            this.CopyProperty(RichTextBoxRangeElement.TextBlockTextAlignmentPropertyId);
            if (this.TextSource.ProjectContext.ResolveProperty(RichTextBoxElement.CaretBrushProperty) != null)
            {
                this.CopyProperty(RichTextBoxElement.CaretBrushProperty);
            }
            ITextFlowSceneNode textFlowSceneNode = (ITextFlowSceneNode)this.TextSource;
            DocumentNodePath   documentNodePath  = this.TextSource.DocumentNodePath;
            SceneViewModel     viewModel         = this.TextSource.ViewModel;
            IDocumentContext   documentContext   = viewModel.Document.DocumentContext;
            IProjectContext    projectContext    = viewModel.Document.ProjectContext;

            using (InstanceBuilderContext instanceBuilderContext = new InstanceBuilderContext(projectContext, viewModel, true, (Microsoft.Expression.DesignModel.DocumentModel.DocumentNode)null))
            {
                using (instanceBuilderContext.DisablePostponedResourceEvaluation())
                {
                    instanceBuilderContext.ViewNodeManager.RootNodePath = documentNodePath;
                    instanceBuilderContext.ViewNodeManager.Instantiate(instanceBuilderContext.ViewNodeManager.Root);
                }
                this.UpdateUIChildrenInstances((IInstanceBuilderContext)instanceBuilderContext);
                ReferenceStep referenceStep = (ReferenceStep)projectContext.ResolveProperty(textFlowSceneNode.TextChildProperty);
                bool          flag1         = false;
                bool          flag2         = false;
                bool          flag3         = false;
                FlowDocument  flowDocument  = (FlowDocument)referenceStep.GetCurrentValue(instanceBuilderContext.ViewNodeManager.Root.Instance);
                DependencyPropertyReferenceStep shadowProperty = DesignTimeProperties.GetShadowProperty(projectContext.ResolveProperty(TextElementSceneElement.FontFamilyProperty), (ITypeId)null);
                if (flowDocument == null)
                {
                    flowDocument = new FlowDocument();
                }
                else
                {
                    flag1 = ((ReferenceStep)projectContext.ResolveProperty(TextElementSceneElement.FontSizeProperty)).IsSet((object)flowDocument);
                    flag2 = ((ReferenceStep)projectContext.ResolveProperty(ParagraphElement.TextAlignmentProperty)).IsSet((object)flowDocument);
                    flag3 = shadowProperty.IsSet((object)flowDocument);
                }
                double        fontSize      = flowDocument.FontSize;
                FontFamily    fontFamily    = (FontFamily)shadowProperty.GetValue((object)flowDocument);
                Thickness     pagePadding   = flowDocument.PagePadding;
                TextAlignment textAlignment = flowDocument.TextAlignment;
                referenceStep.SetValue(instanceBuilderContext.ViewNodeManager.Root.Instance, (object)new FlowDocument());
                this.RichTextBox.Document = (IViewFlowDocument)this.TextSource.Platform.ViewObjectFactory.Instantiate((object)flowDocument);
                if (flag1)
                {
                    flowDocument.FontSize = fontSize;
                }
                if (flag3)
                {
                    if (!DesignTimeProperties.UseShadowPropertyForInstanceBuilding(this.TypeResolver, ControlElement.FontFamilyProperty))
                    {
                        flowDocument.FontFamily = fontFamily;
                    }
                    else
                    {
                        shadowProperty.SetValue((object)flowDocument, (object)fontFamily);
                    }
                }
                if (flag2)
                {
                    flowDocument.TextAlignment = textAlignment;
                }
                flowDocument.PagePadding = pagePadding;
            }
        }