Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Documents / InlineUIContainer.cs / 1 / 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
- BindingMAnagerBase.cs
- SmtpDigestAuthenticationModule.cs
- EntityContainerAssociationSet.cs
- NetworkInformationPermission.cs
- XmlAttributeCache.cs
- DbProviderFactoriesConfigurationHandler.cs
- COM2ColorConverter.cs
- XmlBindingWorker.cs
- TabControlEvent.cs
- ServiceReference.cs
- UnsafeNativeMethods.cs
- ActionFrame.cs
- AncillaryOps.cs
- HttpModuleActionCollection.cs
- PipeStream.cs
- XmlAttributeAttribute.cs
- EntityModelBuildProvider.cs
- ScaleTransform.cs
- ObjectDataSourceSelectingEventArgs.cs
- HitTestResult.cs
- XamlFilter.cs
- SHA256.cs
- BinaryObjectWriter.cs
- APCustomTypeDescriptor.cs
- PaperSource.cs
- EncodingFallbackAwareXmlTextWriter.cs
- ObjectPersistData.cs
- Baml2006ReaderContext.cs
- ConstraintManager.cs
- CommandHelpers.cs
- XPathSelfQuery.cs
- ResizeBehavior.cs
- GridViewUpdatedEventArgs.cs
- ParentControlDesigner.cs
- DataProtection.cs
- KeyValuePairs.cs
- XmlConverter.cs
- InlineUIContainer.cs
- PixelFormat.cs
- TreeBuilderBamlTranslator.cs
- HttpConfigurationContext.cs
- RowUpdatedEventArgs.cs
- AssemblyAttributes.cs
- GenericWebPart.cs
- TransportElement.cs
- SQLChars.cs
- DataSysAttribute.cs
- ExclusiveCanonicalizationTransform.cs
- DirectionalLight.cs
- HandlerElement.cs
- AssemblyUtil.cs
- AsymmetricSignatureFormatter.cs
- TdsParserSessionPool.cs
- FrameAutomationPeer.cs
- XamlInt32CollectionSerializer.cs
- MessageSecurityTokenVersion.cs
- SplineKeyFrames.cs
- HiddenFieldDesigner.cs
- HttpTransportSecurity.cs
- Point3DCollection.cs
- PersonalizationStateInfo.cs
- DigitShape.cs
- DefaultValueTypeConverter.cs
- PolicyException.cs
- WindowsSpinner.cs
- ConnectionOrientedTransportElement.cs
- serverconfig.cs
- CqlParser.cs
- ScrollData.cs
- PeerResolver.cs
- RefExpr.cs
- ConfigurationStrings.cs
- Material.cs
- SqlDataReader.cs
- ThemeableAttribute.cs
- RecordManager.cs
- XmlBinaryReader.cs
- MenuScrollingVisibilityConverter.cs
- XmlSerializerFactory.cs
- Attributes.cs
- XmlToDatasetMap.cs
- UDPClient.cs
- TransportBindingElement.cs
- TopClause.cs
- ServiceDebugBehavior.cs
- WebDescriptionAttribute.cs
- LogStore.cs
- RepeatEnumerable.cs
- XamlTreeBuilder.cs
- RsaSecurityTokenAuthenticator.cs
- ApplicationTrust.cs
- DescendantOverDescendantQuery.cs
- ByteRangeDownloader.cs
- ExpressionNode.cs
- SelectionRange.cs
- OLEDB_Util.cs
- WebPartVerbsEventArgs.cs
- DataObjectCopyingEventArgs.cs
- UserControl.cs
- UriTemplateVariablePathSegment.cs