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
- Cursor.cs
- LineGeometry.cs
- ConfigurationStrings.cs
- ObjectViewFactory.cs
- RoleService.cs
- OLEDB_Enum.cs
- FrameworkPropertyMetadata.cs
- DatePickerDateValidationErrorEventArgs.cs
- PartialTrustVisibleAssembly.cs
- RelAssertionDirectKeyIdentifierClause.cs
- NetworkInterface.cs
- FormatException.cs
- OutputCacheProfile.cs
- FormViewInsertedEventArgs.cs
- XmlCharacterData.cs
- NestedContainer.cs
- ThreadAbortException.cs
- XmlSchemaParticle.cs
- MultiBinding.cs
- ProcessHostFactoryHelper.cs
- DataContractJsonSerializerOperationFormatter.cs
- NetworkStream.cs
- DataRelationCollection.cs
- SafePointer.cs
- ForeignKeyConstraint.cs
- StringCollectionMarkupSerializer.cs
- Touch.cs
- Main.cs
- ADMembershipProvider.cs
- GridProviderWrapper.cs
- Function.cs
- OutputCacheSettingsSection.cs
- AttributeQuery.cs
- HttpPostProtocolReflector.cs
- PriorityItem.cs
- NeedSkipTokenVisitor.cs
- DocumentReference.cs
- SapiGrammar.cs
- unsafenativemethodstextservices.cs
- WCFServiceClientProxyGenerator.cs
- ColumnMap.cs
- StandardRuntimeEnumValidatorAttribute.cs
- ScrollItemProviderWrapper.cs
- MenuItemBindingCollection.cs
- HebrewCalendar.cs
- KerberosTicketHashIdentifierClause.cs
- MediaTimeline.cs
- Activity.cs
- Statements.cs
- HtmlControlDesigner.cs
- SerialPinChanges.cs
- MachineKeySection.cs
- EncodingDataItem.cs
- NoneExcludedImageIndexConverter.cs
- ImportRequest.cs
- ThaiBuddhistCalendar.cs
- DataObjectAttribute.cs
- SurrogateEncoder.cs
- SerializerWriterEventHandlers.cs
- ReadOnlyDataSourceView.cs
- XmlReflectionImporter.cs
- BamlResourceContent.cs
- HttpCachePolicy.cs
- HttpApplication.cs
- TdsParserStateObject.cs
- QueryParameter.cs
- EntityContainerAssociationSet.cs
- MachineKeyValidationConverter.cs
- VisualStyleRenderer.cs
- X509CertificateInitiatorClientCredential.cs
- OleDbPermission.cs
- XsdCachingReader.cs
- SR.cs
- SqlMethodCallConverter.cs
- SafeRightsManagementEnvironmentHandle.cs
- XPathSelfQuery.cs
- UriSection.cs
- DesignerActionTextItem.cs
- Profiler.cs
- Sorting.cs
- BuildProvidersCompiler.cs
- ListViewHitTestInfo.cs
- ViewStateModeByIdAttribute.cs
- SQLSingle.cs
- StringPropertyBuilder.cs
- _emptywebproxy.cs
- Int64.cs
- TrackBarRenderer.cs
- IPAddress.cs
- ObjectDataSourceSelectingEventArgs.cs
- MembershipAdapter.cs
- PasswordTextNavigator.cs
- ActivationArguments.cs
- X509ChainElement.cs
- ArrayEditor.cs
- Stylesheet.cs
- SystemIcons.cs
- BitmapImage.cs
- SqlInfoMessageEvent.cs
- ObjectDataSourceDesigner.cs