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; } }