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
- dataprotectionpermission.cs
- ProvidePropertyAttribute.cs
- Translator.cs
- TextEditorParagraphs.cs
- CatalogPart.cs
- PolyLineSegment.cs
- TimeSpanConverter.cs
- GraphicsPathIterator.cs
- ServiceProviders.cs
- EmptyStringExpandableObjectConverter.cs
- SmtpNetworkElement.cs
- ContextMenuAutomationPeer.cs
- ToolStripItemImageRenderEventArgs.cs
- XmlSchemaSubstitutionGroup.cs
- RpcAsyncResult.cs
- ControlPaint.cs
- CompensationHandlingFilter.cs
- InternalConfigSettingsFactory.cs
- PageAdapter.cs
- ResourceReferenceKeyNotFoundException.cs
- PersonalizationStateInfo.cs
- WmpBitmapEncoder.cs
- XDeferredAxisSource.cs
- BitmapEffectCollection.cs
- DetailsViewInsertEventArgs.cs
- TextServicesDisplayAttribute.cs
- ResXResourceSet.cs
- RuntimeResourceSet.cs
- Options.cs
- PasswordTextContainer.cs
- FontUnitConverter.cs
- BaseAppDomainProtocolHandler.cs
- StringAnimationUsingKeyFrames.cs
- DecimalFormatter.cs
- PeerNameRecord.cs
- OdbcConnectionHandle.cs
- ScriptModule.cs
- UInt64Converter.cs
- DataGridTextBox.cs
- PolicyStatement.cs
- CursorConverter.cs
- Control.cs
- InputReport.cs
- XamlBrushSerializer.cs
- BamlLocalizableResourceKey.cs
- LinearKeyFrames.cs
- WindowsFormsEditorServiceHelper.cs
- Nullable.cs
- OleDbParameterCollection.cs
- URLIdentityPermission.cs
- MarkupExtensionReturnTypeAttribute.cs
- DataPagerFieldCollection.cs
- PTManager.cs
- KeyboardNavigation.cs
- TriggerBase.cs
- WebBrowsableAttribute.cs
- UrlMappingCollection.cs
- XmlParserContext.cs
- DoubleAnimationUsingKeyFrames.cs
- FileAuthorizationModule.cs
- Crypto.cs
- XmlQueryStaticData.cs
- DoubleAnimationUsingKeyFrames.cs
- BitSet.cs
- ProtocolsConfiguration.cs
- Frame.cs
- DependencyPropertyChangedEventArgs.cs
- LineMetrics.cs
- InvalidDataException.cs
- ProcessStartInfo.cs
- ErrorRuntimeConfig.cs
- StylusTip.cs
- DataTable.cs
- SupportedAddressingMode.cs
- Assert.cs
- TextServicesPropertyRanges.cs
- MSAAEventDispatcher.cs
- AppDomainProtocolHandler.cs
- IDQuery.cs
- DocumentOrderQuery.cs
- SourceFilter.cs
- Matrix3DValueSerializer.cs
- XmlNullResolver.cs
- InternalTypeHelper.cs
- ToolZone.cs
- OrderByBuilder.cs
- DtdParser.cs
- SoapIgnoreAttribute.cs
- SafeCancelMibChangeNotify.cs
- CaretElement.cs
- SpecialNameAttribute.cs
- GetWinFXPath.cs
- DictionarySurrogate.cs
- MailBnfHelper.cs
- JsonSerializer.cs
- ImageSourceValueSerializer.cs
- ProtectedConfigurationProviderCollection.cs
- FormView.cs
- SlipBehavior.cs
- TPLETWProvider.cs