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
- XmlSchemaType.cs
- DrawingGroup.cs
- GenericAuthenticationEventArgs.cs
- ConfigXmlAttribute.cs
- ThreadPool.cs
- DataGridTableStyleMappingNameEditor.cs
- EventManager.cs
- localization.cs
- EntityViewGenerationAttribute.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- PenLineJoinValidation.cs
- XmlAnyAttributeAttribute.cs
- DefaultSection.cs
- Cursors.cs
- DataGridViewCellStateChangedEventArgs.cs
- Crypto.cs
- ResourceContainer.cs
- CodePropertyReferenceExpression.cs
- TextFormatterHost.cs
- FileClassifier.cs
- PipeException.cs
- XmlSchemaAttributeGroup.cs
- MobileControlsSectionHandler.cs
- Typeface.cs
- ResourceExpression.cs
- SqlDataSourceFilteringEventArgs.cs
- COSERVERINFO.cs
- WindowsListViewSubItem.cs
- CodeExpressionStatement.cs
- BitmapEffectState.cs
- DataBinder.cs
- WmlTextViewAdapter.cs
- InstalledVoice.cs
- TableCell.cs
- BoundsDrawingContextWalker.cs
- TextElementAutomationPeer.cs
- CryptoSession.cs
- DataListItemCollection.cs
- XmlLinkedNode.cs
- ConvertTextFrag.cs
- UnmanagedMemoryAccessor.cs
- XmlSchemaSimpleTypeRestriction.cs
- XamlClipboardData.cs
- WebDisplayNameAttribute.cs
- LookupNode.cs
- BitmapEncoder.cs
- XmlSchemaSequence.cs
- DataViewListener.cs
- Switch.cs
- NativeMethods.cs
- SectionInput.cs
- KeyedHashAlgorithm.cs
- SecurityContextCookieSerializer.cs
- StringStorage.cs
- VisualTarget.cs
- SeekableReadStream.cs
- NativeMethods.cs
- HtmlElementErrorEventArgs.cs
- Light.cs
- PingReply.cs
- WindowsListBox.cs
- ByteAnimation.cs
- QilCloneVisitor.cs
- Menu.cs
- HatchBrush.cs
- DataBindingHandlerAttribute.cs
- UIHelper.cs
- EventProviderTraceListener.cs
- DataTemplateSelector.cs
- DesignerAutoFormatCollection.cs
- TaiwanCalendar.cs
- CompilerErrorCollection.cs
- FileDialog.cs
- InputReport.cs
- AtomicFile.cs
- CodeGotoStatement.cs
- _DomainName.cs
- MatrixTransform.cs
- DbConnectionPoolCounters.cs
- Int32Storage.cs
- GradientBrush.cs
- HtmlEmptyTagControlBuilder.cs
- DaylightTime.cs
- XmlSerializerSection.cs
- ObjectViewListener.cs
- EncodingTable.cs
- LabelExpression.cs
- ComboBoxItem.cs
- OleDbRowUpdatedEvent.cs
- WebBrowserBase.cs
- LoginName.cs
- ConfigurationProviderException.cs
- PingOptions.cs
- TypeDelegator.cs
- NTAccount.cs
- TextureBrush.cs
- SmiMetaData.cs
- SmiMetaDataProperty.cs
- StringOutput.cs
- CapabilitiesState.cs