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
- DataGridColumnHeaderAutomationPeer.cs
- TextBox.cs
- TreeViewImageKeyConverter.cs
- Underline.cs
- SuppressMergeCheckAttribute.cs
- DrawListViewColumnHeaderEventArgs.cs
- EntityTransaction.cs
- DetailsViewDeleteEventArgs.cs
- odbcmetadatacolumnnames.cs
- BamlLocalizer.cs
- ScriptDescriptor.cs
- PresentationTraceSources.cs
- TraceHandler.cs
- LocatorGroup.cs
- QueryOperatorEnumerator.cs
- ScriptManagerProxy.cs
- DataTableMapping.cs
- DataGridViewIntLinkedList.cs
- Int64.cs
- DefaultValidator.cs
- ComponentResourceKey.cs
- SqlRemoveConstantOrderBy.cs
- SQLByteStorage.cs
- InvalidPrinterException.cs
- RotationValidation.cs
- RawStylusInputCustomData.cs
- AutomationPeer.cs
- TextServicesDisplayAttribute.cs
- XomlCompilerParameters.cs
- InvalidAsynchronousStateException.cs
- XmlEnumAttribute.cs
- OleDbInfoMessageEvent.cs
- ElasticEase.cs
- validationstate.cs
- BindingCollection.cs
- BaseTemplateCodeDomTreeGenerator.cs
- SparseMemoryStream.cs
- FilterFactory.cs
- ParameterCollectionEditor.cs
- HierarchicalDataBoundControlAdapter.cs
- CultureInfo.cs
- SqlDataSourceSelectingEventArgs.cs
- BamlRecordReader.cs
- SortExpressionBuilder.cs
- TextContainerChangeEventArgs.cs
- NavigatingCancelEventArgs.cs
- UrlPath.cs
- ConfigXmlDocument.cs
- DataKey.cs
- SessionStateContainer.cs
- ProfessionalColorTable.cs
- SqlDataReader.cs
- InputLanguageEventArgs.cs
- AssemblyInfo.cs
- EntryWrittenEventArgs.cs
- SecurityElement.cs
- X509ChainElement.cs
- EllipseGeometry.cs
- HttpProfileBase.cs
- DataServiceBehavior.cs
- ContainerControl.cs
- OutputCacheEntry.cs
- IPAddressCollection.cs
- BStrWrapper.cs
- PresentationAppDomainManager.cs
- CommonRemoteMemoryBlock.cs
- KeyboardDevice.cs
- ExtenderControl.cs
- CheckBoxPopupAdapter.cs
- AsymmetricCryptoHandle.cs
- GeometryHitTestResult.cs
- DataViewManagerListItemTypeDescriptor.cs
- PointLightBase.cs
- FixedSOMTable.cs
- DeploymentSectionCache.cs
- PassportAuthenticationModule.cs
- DynamicHyperLink.cs
- SetterTriggerConditionValueConverter.cs
- ProxyAttribute.cs
- MonthCalendar.cs
- NameValueCollection.cs
- SkinBuilder.cs
- ExpressionPrefixAttribute.cs
- BulletDecorator.cs
- LinqDataSourceEditData.cs
- ServiceDesigner.cs
- TableItemPattern.cs
- MemoryStream.cs
- KeyTimeConverter.cs
- ContentPathSegment.cs
- HtmlSelect.cs
- MemberDescriptor.cs
- WebPartExportVerb.cs
- XmlAttributeAttribute.cs
- StrongTypingException.cs
- Avt.cs
- SkipQueryOptionExpression.cs
- XmlSchemaDatatype.cs
- HttpResponseHeader.cs
- ServerType.cs