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
- StructuralObject.cs
- SynchronizationScope.cs
- EmbeddedObject.cs
- ValidationException.cs
- Predicate.cs
- AnimationClock.cs
- IndentTextWriter.cs
- BamlBinaryWriter.cs
- PolyLineSegment.cs
- AffineTransform3D.cs
- LayoutTableCell.cs
- BitmapEffectvisualstate.cs
- ListViewItemEventArgs.cs
- WebPartConnectionCollection.cs
- ValueHandle.cs
- Point3DCollection.cs
- DataServiceKeyAttribute.cs
- PeerNameRecord.cs
- ObservableCollectionDefaultValueFactory.cs
- ExtensionFile.cs
- StatusBarPanelClickEvent.cs
- XmlAnyElementAttribute.cs
- DetailsViewCommandEventArgs.cs
- KnownColorTable.cs
- SqlMethodAttribute.cs
- TwoPhaseCommit.cs
- SoapInteropTypes.cs
- DetailsViewDeletedEventArgs.cs
- WebPartDisplayModeEventArgs.cs
- FastPropertyAccessor.cs
- ClipboardData.cs
- TokenizerHelper.cs
- SqlWebEventProvider.cs
- CodeChecksumPragma.cs
- MimeFormatter.cs
- PathFigureCollection.cs
- BinHexDecoder.cs
- GroupItemAutomationPeer.cs
- DrawingContext.cs
- FormViewPageEventArgs.cs
- SelectionBorderGlyph.cs
- DefaultObjectMappingItemCollection.cs
- ParseHttpDate.cs
- CircleHotSpot.cs
- OrthographicCamera.cs
- ParallelLoopState.cs
- NavigationPropertyEmitter.cs
- ToolStripItemGlyph.cs
- Size3DValueSerializer.cs
- Line.cs
- MenuBase.cs
- XmlAttributeCollection.cs
- TextEndOfSegment.cs
- CapabilitiesSection.cs
- TypeUnloadedException.cs
- ProfileEventArgs.cs
- ProcessingInstructionAction.cs
- DropTarget.cs
- CodeCastExpression.cs
- EUCJPEncoding.cs
- cookie.cs
- InvalidateEvent.cs
- UntypedNullExpression.cs
- ResourceExpressionEditor.cs
- ListControl.cs
- VersionedStream.cs
- XmlQualifiedName.cs
- ChildTable.cs
- SiteMapHierarchicalDataSourceView.cs
- WindowsFormsHostAutomationPeer.cs
- documentsequencetextpointer.cs
- DuplexSecurityProtocolFactory.cs
- MobileCapabilities.cs
- ThousandthOfEmRealDoubles.cs
- AtomServiceDocumentSerializer.cs
- GCHandleCookieTable.cs
- Gdiplus.cs
- ObjectDataSourceDesigner.cs
- ALinqExpressionVisitor.cs
- SqlRowUpdatedEvent.cs
- WebPartManagerInternals.cs
- DetailsViewInsertEventArgs.cs
- SingleSelectRootGridEntry.cs
- TrustSection.cs
- IMembershipProvider.cs
- WebConfigurationFileMap.cs
- Util.cs
- AsyncDataRequest.cs
- Stacktrace.cs
- ADMembershipProvider.cs
- Substitution.cs
- QueryLifecycle.cs
- FusionWrap.cs
- RequiredFieldValidator.cs
- InputReferenceExpression.cs
- CompilationSection.cs
- TextServicesDisplayAttributePropertyRanges.cs
- MarkupWriter.cs
- WebDescriptionAttribute.cs
- SingleConverter.cs