Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- ObjectDataSourceFilteringEventArgs.cs
- Inline.cs
- TargetParameterCountException.cs
- Util.cs
- QuadTree.cs
- XmlDataSourceView.cs
- SoapReflectionImporter.cs
- Membership.cs
- RadialGradientBrush.cs
- TextEndOfParagraph.cs
- TransactionInformation.cs
- OutputCacheModule.cs
- sitestring.cs
- LinqDataSourceDeleteEventArgs.cs
- BamlRecordWriter.cs
- HwndHostAutomationPeer.cs
- NamedPipeTransportElement.cs
- RNGCryptoServiceProvider.cs
- BezierSegment.cs
- SHA256Cng.cs
- SiteMapDataSource.cs
- SpanIndex.cs
- AssemblyBuilder.cs
- ErrorFormatterPage.cs
- HandledMouseEvent.cs
- HtmlForm.cs
- MarshalByValueComponent.cs
- DesignerSerializationVisibilityAttribute.cs
- MenuCommands.cs
- SelectionGlyphBase.cs
- SystemNetHelpers.cs
- SkipStoryboardToFill.cs
- EventProviderWriter.cs
- SQLChars.cs
- LogWriteRestartAreaState.cs
- ExpandCollapsePattern.cs
- DataChangedEventManager.cs
- BrushMappingModeValidation.cs
- ISAPIApplicationHost.cs
- ProviderConnectionPointCollection.cs
- TextAction.cs
- JsonReaderDelegator.cs
- MatrixTransform.cs
- WebUtility.cs
- FragmentNavigationEventArgs.cs
- MobileComponentEditorPage.cs
- MD5CryptoServiceProvider.cs
- User.cs
- BuildManagerHost.cs
- log.cs
- XComponentModel.cs
- AudioLevelUpdatedEventArgs.cs
- MetadataItemSerializer.cs
- IPipelineRuntime.cs
- SafeNativeMethods.cs
- Message.cs
- ActivityExecutorOperation.cs
- Italic.cs
- COM2Enum.cs
- CodeAttributeDeclarationCollection.cs
- _SslState.cs
- SimpleLine.cs
- ScriptingSectionGroup.cs
- Inline.cs
- PropertyBuilder.cs
- NodeFunctions.cs
- Double.cs
- Span.cs
- GroupDescription.cs
- ClientType.cs
- AuthorizationRule.cs
- InterleavedZipPartStream.cs
- ConfigurationLocation.cs
- Int32CollectionConverter.cs
- DragDrop.cs
- ReadOnlyHierarchicalDataSource.cs
- RedirectionProxy.cs
- WebPartsPersonalization.cs
- RemotingException.cs
- ScrollableControl.cs
- UndirectedGraph.cs
- CalendarData.cs
- FormViewPagerRow.cs
- fixedPageContentExtractor.cs
- XhtmlCssHandler.cs
- BamlCollectionHolder.cs
- TraceUtility.cs
- ISFTagAndGuidCache.cs
- RewritingSimplifier.cs
- AsyncContentLoadedEventArgs.cs
- EdmComplexTypeAttribute.cs
- RootBrowserWindow.cs
- BufferedGraphicsContext.cs
- PackageDigitalSignature.cs
- CorrelationManager.cs
- DataTemplateSelector.cs
- BamlRecordWriter.cs
- DoubleAnimationUsingPath.cs
- DateTimeFormatInfo.cs
- SponsorHelper.cs