Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Documents / InlineUIContainer.cs / 1305600 / InlineUIContainer.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // // Description: InlineUIContainer - a wrapper for embedded UIElements in text // flow content inline collections // //--------------------------------------------------------------------------- using System.ComponentModel; // DesignerSerializationVisibility using System.Windows.Markup; // XamlDesignerSerializationManager using MS.Internal; using MS.Internal.Documents; namespace System.Windows.Documents { ////// InlineUIContainer - a wrapper for embedded UIElements in text /// flow content inline collections /// [ContentProperty("Child")] [TextElementEditingBehaviorAttribute(IsMergeable = false)] public class InlineUIContainer : Inline { //------------------------------------------------------------------- // // Constructors // //------------------------------------------------------------------- #region Constructors ////// Initializes a new instance of InlineUIContainer element. /// ////// The purpose of this element is to be a wrapper for UIElements /// when they are embedded into text flow - as items of /// InlineCollections. /// public InlineUIContainer() { } ////// Initializes an InlineBox specifying its child UIElement /// /// /// UIElement set as a child of this inline item /// public InlineUIContainer(UIElement childUIElement) : this(childUIElement, null) { } ////// Creates a new InlineUIContainer instance. /// /// /// Optional child of the new InlineUIContainer, may be null. /// /// /// Optional position at which to insert the new InlineUIContainer. May /// be null. /// public InlineUIContainer(UIElement childUIElement, TextPointer insertionPosition) { if (insertionPosition != null) { insertionPosition.TextContainer.BeginChange(); } try { if (insertionPosition != null) { // This will throw InvalidOperationException if schema validity is violated. insertionPosition.InsertInline(this); } this.Child = childUIElement; } finally { if (insertionPosition != null) { insertionPosition.TextContainer.EndChange(); } } } #endregion Constructors //-------------------------------------------------------------------- // // Public Properties // //------------------------------------------------------------------- #region Public Properties ////// The content spanned by this TextElement. /// public UIElement Child { get { return this.ContentStart.GetAdjacentElement(LogicalDirection.Forward) as UIElement; } set { TextContainer textContainer = this.TextContainer; textContainer.BeginChange(); try { TextPointer contentStart = this.ContentStart; UIElement child = Child; if (child != null) { textContainer.DeleteContentInternal(contentStart, this.ContentEnd); ContainerTextElementField.ClearValue(child); } if (value != null) { ContainerTextElementField.SetValue(value, this); contentStart.InsertUIElement(value); } } finally { textContainer.EndChange(); } } } #endregion Public Properties #region Internal Properties ////// UIElementIsland representing embedded Element Layout island within content world. /// internal UIElementIsland UIElementIsland { get { UpdateUIElementIsland(); return _uiElementIsland; } } #endregion Internal Properties #region Private Methods ////// Ensures the _uiElementIsland variable is up to date /// private void UpdateUIElementIsland() { UIElement childElement = this.Child; if(_uiElementIsland == null || _uiElementIsland.Root != childElement) { if(_uiElementIsland != null) { _uiElementIsland.Dispose(); _uiElementIsland = null; } if(childElement != null) { _uiElementIsland = new UIElementIsland(childElement); } } } #endregion Private Methods #region Private Data private UIElementIsland _uiElementIsland; #endregion Private Data } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // // Description: InlineUIContainer - a wrapper for embedded UIElements in text // flow content inline collections // //--------------------------------------------------------------------------- using System.ComponentModel; // DesignerSerializationVisibility using System.Windows.Markup; // XamlDesignerSerializationManager using MS.Internal; using MS.Internal.Documents; namespace System.Windows.Documents { ////// InlineUIContainer - a wrapper for embedded UIElements in text /// flow content inline collections /// [ContentProperty("Child")] [TextElementEditingBehaviorAttribute(IsMergeable = false)] public class InlineUIContainer : Inline { //------------------------------------------------------------------- // // Constructors // //------------------------------------------------------------------- #region Constructors ////// Initializes a new instance of InlineUIContainer element. /// ////// The purpose of this element is to be a wrapper for UIElements /// when they are embedded into text flow - as items of /// InlineCollections. /// public InlineUIContainer() { } ////// Initializes an InlineBox specifying its child UIElement /// /// /// UIElement set as a child of this inline item /// public InlineUIContainer(UIElement childUIElement) : this(childUIElement, null) { } ////// Creates a new InlineUIContainer instance. /// /// /// Optional child of the new InlineUIContainer, may be null. /// /// /// Optional position at which to insert the new InlineUIContainer. May /// be null. /// public InlineUIContainer(UIElement childUIElement, TextPointer insertionPosition) { if (insertionPosition != null) { insertionPosition.TextContainer.BeginChange(); } try { if (insertionPosition != null) { // This will throw InvalidOperationException if schema validity is violated. insertionPosition.InsertInline(this); } this.Child = childUIElement; } finally { if (insertionPosition != null) { insertionPosition.TextContainer.EndChange(); } } } #endregion Constructors //-------------------------------------------------------------------- // // Public Properties // //------------------------------------------------------------------- #region Public Properties ////// The content spanned by this TextElement. /// public UIElement Child { get { return this.ContentStart.GetAdjacentElement(LogicalDirection.Forward) as UIElement; } set { TextContainer textContainer = this.TextContainer; textContainer.BeginChange(); try { TextPointer contentStart = this.ContentStart; UIElement child = Child; if (child != null) { textContainer.DeleteContentInternal(contentStart, this.ContentEnd); ContainerTextElementField.ClearValue(child); } if (value != null) { ContainerTextElementField.SetValue(value, this); contentStart.InsertUIElement(value); } } finally { textContainer.EndChange(); } } } #endregion Public Properties #region Internal Properties ////// UIElementIsland representing embedded Element Layout island within content world. /// internal UIElementIsland UIElementIsland { get { UpdateUIElementIsland(); return _uiElementIsland; } } #endregion Internal Properties #region Private Methods ////// Ensures the _uiElementIsland variable is up to date /// private void UpdateUIElementIsland() { UIElement childElement = this.Child; if(_uiElementIsland == null || _uiElementIsland.Root != childElement) { if(_uiElementIsland != null) { _uiElementIsland.Dispose(); _uiElementIsland = null; } if(childElement != null) { _uiElementIsland = new UIElementIsland(childElement); } } } #endregion Private Methods #region Private Data private UIElementIsland _uiElementIsland; #endregion Private Data } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- InternalConfigRoot.cs
- PrintDialog.cs
- PingOptions.cs
- PropertyRef.cs
- ZipIOCentralDirectoryFileHeader.cs
- HttpCacheVaryByContentEncodings.cs
- PauseStoryboard.cs
- SchemaObjectWriter.cs
- XmlSchemaAny.cs
- MULTI_QI.cs
- LassoSelectionBehavior.cs
- ProfileBuildProvider.cs
- FilteredReadOnlyMetadataCollection.cs
- TokenBasedSet.cs
- TimerEventSubscription.cs
- SelectedGridItemChangedEvent.cs
- Rijndael.cs
- WindowsRichEditRange.cs
- PropertyItem.cs
- ToolboxBitmapAttribute.cs
- DataColumnCollection.cs
- RegexFCD.cs
- AssertUtility.cs
- SQLChars.cs
- TextPattern.cs
- RtType.cs
- XPathNavigatorKeyComparer.cs
- dbenumerator.cs
- InputChannel.cs
- PageWrapper.cs
- ImageBrush.cs
- GenericIdentity.cs
- FontFamily.cs
- SurrogateDataContract.cs
- PageFunction.cs
- AnnotationDocumentPaginator.cs
- RijndaelManaged.cs
- WorkItem.cs
- UIPropertyMetadata.cs
- ProbeMatches11.cs
- TypeInitializationException.cs
- Dispatcher.cs
- IResourceProvider.cs
- PreviewPageInfo.cs
- StylusPointProperty.cs
- CacheHelper.cs
- SimpleWorkerRequest.cs
- SqlDataSourceCustomCommandEditor.cs
- MimeWriter.cs
- OciHandle.cs
- RegistrySecurity.cs
- ExtenderProviderService.cs
- MetadataSection.cs
- MaxSessionCountExceededException.cs
- Tuple.cs
- SqlReferenceCollection.cs
- DelayedRegex.cs
- PropertyCondition.cs
- Tag.cs
- DbConnectionOptions.cs
- ProofTokenCryptoHandle.cs
- CompositionDesigner.cs
- Exception.cs
- ValidationRule.cs
- ErrorRuntimeConfig.cs
- BufferBuilder.cs
- AspNetSynchronizationContext.cs
- WebPartConnectionsDisconnectVerb.cs
- XPathParser.cs
- NotCondition.cs
- XmlNamespaceMappingCollection.cs
- TreeViewDesigner.cs
- ZipFileInfoCollection.cs
- ProvideValueServiceProvider.cs
- Size3D.cs
- LogicalMethodInfo.cs
- WindowsTitleBar.cs
- DispatcherHookEventArgs.cs
- EdmSchemaError.cs
- EmptyEnumerable.cs
- TypeDescriptor.cs
- MsmqIntegrationChannelFactory.cs
- AtomServiceDocumentSerializer.cs
- WorkflowQueue.cs
- DependencySource.cs
- CommonDialog.cs
- StyleSelector.cs
- IncrementalHitTester.cs
- ValueTable.cs
- COM2ExtendedUITypeEditor.cs
- PlatformCulture.cs
- NavigationFailedEventArgs.cs
- OleDbReferenceCollection.cs
- StackSpiller.Temps.cs
- WorkflowInstanceSuspendedRecord.cs
- XmlSchemaType.cs
- FormViewPageEventArgs.cs
- URLIdentityPermission.cs
- TextChange.cs
- WmlListAdapter.cs