Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- Internal.cs
- SetStoryboardSpeedRatio.cs
- StringDictionary.cs
- BitmapSource.cs
- NonClientArea.cs
- WCFModelStrings.Designer.cs
- XmlDataDocument.cs
- CssClassPropertyAttribute.cs
- Decimal.cs
- CompilerParameters.cs
- DataControlFieldCollection.cs
- ExpressionConverter.cs
- ComponentManagerBroker.cs
- Translator.cs
- TabletCollection.cs
- ResXDataNode.cs
- ObjectKeyFrameCollection.cs
- PointAnimationUsingPath.cs
- RuntimeArgumentHandle.cs
- EventSinkHelperWriter.cs
- OdbcCommandBuilder.cs
- SettingsBindableAttribute.cs
- ObjectListCommandsPage.cs
- XmlSequenceWriter.cs
- SqlProviderManifest.cs
- UnknownBitmapEncoder.cs
- XmlEntityReference.cs
- RegexRunner.cs
- LabelAutomationPeer.cs
- WebPartHelpVerb.cs
- Internal.cs
- PackageDigitalSignature.cs
- SystemKeyConverter.cs
- DockPanel.cs
- SpeechSeg.cs
- ResXBuildProvider.cs
- ProfilePropertyNameValidator.cs
- ChameleonKey.cs
- StyleSheetDesigner.cs
- DataGridViewRowCancelEventArgs.cs
- WinFormsComponentEditor.cs
- DataContractJsonSerializer.cs
- VariableQuery.cs
- TextRangeEditTables.cs
- CalendarData.cs
- RegexMatch.cs
- XsdBuildProvider.cs
- BitmapInitialize.cs
- InternalPolicyElement.cs
- HttpRuntimeSection.cs
- OutputCacheProfile.cs
- TypeGeneratedEventArgs.cs
- InternalResources.cs
- DesignerTransaction.cs
- ReadOnlyCollection.cs
- PtsContext.cs
- SmiXetterAccessMap.cs
- SSmlParser.cs
- UTF8Encoding.cs
- TranslateTransform3D.cs
- FormsAuthenticationUser.cs
- DataGridViewCellStateChangedEventArgs.cs
- _ListenerRequestStream.cs
- CompositeActivityCodeGenerator.cs
- UnauthorizedAccessException.cs
- KeyPullup.cs
- ResXResourceReader.cs
- Bind.cs
- AttributeQuery.cs
- DoWorkEventArgs.cs
- cryptoapiTransform.cs
- RotationValidation.cs
- SettingsBase.cs
- HwndHostAutomationPeer.cs
- DeviceContext2.cs
- Merger.cs
- SqlBulkCopyColumnMapping.cs
- XpsFilter.cs
- QueryTask.cs
- FlowDocumentReader.cs
- CompensationHandlingFilter.cs
- sqlnorm.cs
- WeakHashtable.cs
- SamlAttribute.cs
- ControlEvent.cs
- Base64Stream.cs
- ViewKeyConstraint.cs
- SendMailErrorEventArgs.cs
- ReferenceConverter.cs
- PermissionRequestEvidence.cs
- mda.cs
- ImageDesigner.cs
- XmlSiteMapProvider.cs
- URLMembershipCondition.cs
- AttachedPropertyBrowsableAttribute.cs
- RoutedPropertyChangedEventArgs.cs
- ModelChangedEventArgsImpl.cs
- DbConnectionPoolGroupProviderInfo.cs
- PersonalizableAttribute.cs
- SafeHandles.cs