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
- AstTree.cs
- HijriCalendar.cs
- TailCallAnalyzer.cs
- OdbcErrorCollection.cs
- UserControl.cs
- OutputCacheProfileCollection.cs
- SynchronousSendBindingElement.cs
- EdmRelationshipRoleAttribute.cs
- SqlUnionizer.cs
- SequentialOutput.cs
- ISAPIApplicationHost.cs
- BitmapEncoder.cs
- RewritingSimplifier.cs
- TextTreeNode.cs
- BuildTopDownAttribute.cs
- BinaryUtilClasses.cs
- Expr.cs
- MexServiceChannelBuilder.cs
- MetadataPropertyCollection.cs
- EmptyEnumerator.cs
- ProgressBar.cs
- SynchronizedInputProviderWrapper.cs
- ConnectionPoolManager.cs
- DocumentPageTextView.cs
- SelectionWordBreaker.cs
- InheritanceAttribute.cs
- ListManagerBindingsCollection.cs
- Propagator.cs
- PlainXmlDeserializer.cs
- ResourceSet.cs
- SQLMoneyStorage.cs
- NativeWrapper.cs
- HttpModuleActionCollection.cs
- DocobjHost.cs
- DbConnectionFactory.cs
- httpapplicationstate.cs
- BufferCache.cs
- AssemblyBuilder.cs
- BitVector32.cs
- ViewStateAttachedPropertyFeature.cs
- Composition.cs
- TemplatePagerField.cs
- TextureBrush.cs
- TransformPattern.cs
- DynamicValidatorEventArgs.cs
- HttpContext.cs
- ReverseInheritProperty.cs
- altserialization.cs
- ServiceNameElement.cs
- KeyValueSerializer.cs
- NamedPipeConnectionPool.cs
- HtmlShimManager.cs
- DataControlCommands.cs
- HtmlWindowCollection.cs
- Compilation.cs
- ExpressionBuilder.cs
- PlacementWorkspace.cs
- Rules.cs
- ResourceDisplayNameAttribute.cs
- ActiveXHelper.cs
- Rect.cs
- safex509handles.cs
- DefaultSettingsSection.cs
- Configuration.cs
- DataObjectPastingEventArgs.cs
- WebBrowserNavigatingEventHandler.cs
- ResizeGrip.cs
- DataGridViewComboBoxEditingControl.cs
- DataServiceStreamProviderWrapper.cs
- DataKeyArray.cs
- TextProperties.cs
- HMACSHA512.cs
- XmlSerializationGeneratedCode.cs
- Decimal.cs
- CallTemplateAction.cs
- DocumentViewerBaseAutomationPeer.cs
- ImageAttributes.cs
- AppPool.cs
- TextShapeableCharacters.cs
- streamingZipPartStream.cs
- DataRecordInternal.cs
- TriggerActionCollection.cs
- WebPartConnectionsCloseVerb.cs
- HtmlContainerControl.cs
- SelectionHighlightInfo.cs
- Script.cs
- CompiledQuery.cs
- PropertyPath.cs
- SystemColors.cs
- NonParentingControl.cs
- ConfigViewGenerator.cs
- XmlMtomReader.cs
- CompositeTypefaceMetrics.cs
- LinqDataSourceContextEventArgs.cs
- RemotingConfigParser.cs
- _NativeSSPI.cs
- ElementFactory.cs
- HttpServerVarsCollection.cs
- Brush.cs
- Matrix3DStack.cs