Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Data / PriorityBinding.cs / 1305600 / PriorityBinding.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: Defines PriorityBinding object, which stores information // for creating instances of PriorityBindingExpression objects. // // See spec at http://avalon/connecteddata/Specs/Data%20Binding.mht // //--------------------------------------------------------------------------- using System; using System.Collections; using System.Collections.ObjectModel; // Collectionusing System.ComponentModel; using System.Globalization; using System.Windows.Markup; using MS.Internal.Data; using MS.Utility; namespace System.Windows.Data { /// /// Describes a collection of bindings attached to a single property. /// These behave as "priority" bindings, meaning that the property /// receives its value from the first binding in the collection that /// can produce a legal value. /// [ContentProperty("Bindings")] public class PriorityBinding : BindingBase, IAddChild { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- ///Constructor public PriorityBinding() : base() { _bindingCollection = new BindingCollection(this, new BindingCollectionChangedCallback(OnBindingCollectionChanged)); } #region IAddChild ////// Called to Add the object as a Child. /// /// /// Object to add as a child - must have type BindingBase /// void IAddChild.AddChild(Object value) { BindingBase binding = value as BindingBase; if (binding != null) Bindings.Add(binding); else throw new ArgumentException(SR.Get(SRID.ChildHasWrongType, this.GetType().Name, "BindingBase", value.GetType().FullName), "value"); } ////// Called when text appears under the tag in markup /// /// /// Text to Add to the Object /// void IAddChild.AddText(string text) { XamlSerializerUtil.ThrowIfNonWhiteSpaceInAddText(text, this); } #endregion IAddChild //------------------------------------------------------ // // Public Properties // //----------------------------------------------------- ///List of inner bindings [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public CollectionBindings { get { return _bindingCollection; } } /// /// This method is used by TypeDescriptor to determine if this property should /// be serialized. /// [EditorBrowsable(EditorBrowsableState.Never)] public bool ShouldSerializeBindings() { return (Bindings != null && Bindings.Count > 0); } //------------------------------------------------------ // // Protected Methods // //------------------------------------------------------ ////// Create an appropriate expression for this Binding, to be attached /// to the given DependencyProperty on the given DependencyObject. /// internal override BindingExpressionBase CreateBindingExpressionOverride(DependencyObject target, DependencyProperty dp, BindingExpressionBase owner) { return PriorityBindingExpression.CreateBindingExpression(target, dp, this, owner); } internal override BindingBase CreateClone() { return new PriorityBinding(); } internal override void InitializeClone(BindingBase baseClone, BindingMode mode) { PriorityBinding clone = (PriorityBinding)baseClone; for (int i=0; i<=_bindingCollection.Count; ++i) { clone._bindingCollection.Add(_bindingCollection[i].Clone(mode)); } base.InitializeClone(baseClone, mode); } private void OnBindingCollectionChanged() { CheckSealed(); } //----------------------------------------------------- // // Private Fields // //------------------------------------------------------ BindingCollection _bindingCollection; } } // 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: Defines PriorityBinding object, which stores information // for creating instances of PriorityBindingExpression objects. // // See spec at http://avalon/connecteddata/Specs/Data%20Binding.mht // //--------------------------------------------------------------------------- using System; using System.Collections; using System.Collections.ObjectModel; // Collectionusing System.ComponentModel; using System.Globalization; using System.Windows.Markup; using MS.Internal.Data; using MS.Utility; namespace System.Windows.Data { /// /// Describes a collection of bindings attached to a single property. /// These behave as "priority" bindings, meaning that the property /// receives its value from the first binding in the collection that /// can produce a legal value. /// [ContentProperty("Bindings")] public class PriorityBinding : BindingBase, IAddChild { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- ///Constructor public PriorityBinding() : base() { _bindingCollection = new BindingCollection(this, new BindingCollectionChangedCallback(OnBindingCollectionChanged)); } #region IAddChild ////// Called to Add the object as a Child. /// /// /// Object to add as a child - must have type BindingBase /// void IAddChild.AddChild(Object value) { BindingBase binding = value as BindingBase; if (binding != null) Bindings.Add(binding); else throw new ArgumentException(SR.Get(SRID.ChildHasWrongType, this.GetType().Name, "BindingBase", value.GetType().FullName), "value"); } ////// Called when text appears under the tag in markup /// /// /// Text to Add to the Object /// void IAddChild.AddText(string text) { XamlSerializerUtil.ThrowIfNonWhiteSpaceInAddText(text, this); } #endregion IAddChild //------------------------------------------------------ // // Public Properties // //----------------------------------------------------- ///List of inner bindings [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public CollectionBindings { get { return _bindingCollection; } } /// /// This method is used by TypeDescriptor to determine if this property should /// be serialized. /// [EditorBrowsable(EditorBrowsableState.Never)] public bool ShouldSerializeBindings() { return (Bindings != null && Bindings.Count > 0); } //------------------------------------------------------ // // Protected Methods // //------------------------------------------------------ ////// Create an appropriate expression for this Binding, to be attached /// to the given DependencyProperty on the given DependencyObject. /// internal override BindingExpressionBase CreateBindingExpressionOverride(DependencyObject target, DependencyProperty dp, BindingExpressionBase owner) { return PriorityBindingExpression.CreateBindingExpression(target, dp, this, owner); } internal override BindingBase CreateClone() { return new PriorityBinding(); } internal override void InitializeClone(BindingBase baseClone, BindingMode mode) { PriorityBinding clone = (PriorityBinding)baseClone; for (int i=0; i<=_bindingCollection.Count; ++i) { clone._bindingCollection.Add(_bindingCollection[i].Clone(mode)); } base.InitializeClone(baseClone, mode); } private void OnBindingCollectionChanged() { CheckSealed(); } //----------------------------------------------------- // // Private Fields // //------------------------------------------------------ BindingCollection _bindingCollection; } } // 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
- webeventbuffer.cs
- WindowsContainer.cs
- BitStream.cs
- ImageSourceConverter.cs
- ClientProtocol.cs
- StreamSecurityUpgradeInitiatorBase.cs
- StatusBarAutomationPeer.cs
- CuspData.cs
- sortedlist.cs
- CodeObjectCreateExpression.cs
- PaperSize.cs
- PackageProperties.cs
- MailWebEventProvider.cs
- CqlParser.cs
- StringDictionary.cs
- DataServiceQueryContinuation.cs
- WebScriptEnablingElement.cs
- DataControlLinkButton.cs
- DateRangeEvent.cs
- SafeWaitHandle.cs
- XPathNodeInfoAtom.cs
- Material.cs
- RemoteArgument.cs
- ForeignKeyConstraint.cs
- WindowInteropHelper.cs
- DynamicPhysicalDiscoSearcher.cs
- _ScatterGatherBuffers.cs
- HandlerBase.cs
- DomNameTable.cs
- WindowsGraphics2.cs
- ResourceBinder.cs
- DiscoveryDefaults.cs
- ColumnBinding.cs
- EntityDesignerUtils.cs
- CanonicalizationDriver.cs
- PixelShader.cs
- Parser.cs
- __Filters.cs
- ToolStripDropDownButton.cs
- CompilerHelpers.cs
- SegmentInfo.cs
- HwndHost.cs
- TypeDescriptionProvider.cs
- SelectionPattern.cs
- DebugTracing.cs
- WinEventHandler.cs
- DataGridRowAutomationPeer.cs
- DesignerOptionService.cs
- ComAdminWrapper.cs
- BinaryObjectReader.cs
- GlyphRunDrawing.cs
- GlyphInfoList.cs
- ItemContainerPattern.cs
- LinqDataSourceValidationException.cs
- OleDbEnumerator.cs
- ControlValuePropertyAttribute.cs
- NameTable.cs
- NodeLabelEditEvent.cs
- OracleConnectionFactory.cs
- AnnotationResourceCollection.cs
- ipaddressinformationcollection.cs
- CollectionsUtil.cs
- RectangleGeometry.cs
- ProcessStartInfo.cs
- PeerNameResolver.cs
- Mappings.cs
- BamlRecordReader.cs
- WindowsToolbarItemAsMenuItem.cs
- ActivityMarkupSerializer.cs
- UncommonField.cs
- SchemaSetCompiler.cs
- SafeSecurityHandles.cs
- PropertyValue.cs
- TTSVoice.cs
- SafeCertificateStore.cs
- List.cs
- GeometryHitTestParameters.cs
- Avt.cs
- glyphs.cs
- JavaScriptSerializer.cs
- RowToFieldTransformer.cs
- FileDialog_Vista_Interop.cs
- DriveNotFoundException.cs
- PenLineJoinValidation.cs
- ClassicBorderDecorator.cs
- XmlDataSourceDesigner.cs
- ContentOnlyMessage.cs
- TextTreeUndoUnit.cs
- brushes.cs
- InvalidPrinterException.cs
- WrappedReader.cs
- ReferenceEqualityComparer.cs
- ByteArrayHelperWithString.cs
- CodeChecksumPragma.cs
- WebPartConnectionsCancelEventArgs.cs
- SystemIPGlobalStatistics.cs
- DBPropSet.cs
- IResourceProvider.cs
- SecurityManager.cs
- MatrixTransform.cs