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
- DataGridViewHeaderCell.cs
- MergePropertyDescriptor.cs
- CodePropertyReferenceExpression.cs
- HatchBrush.cs
- IPeerNeighbor.cs
- BevelBitmapEffect.cs
- TypeValidationEventArgs.cs
- CommonGetThemePartSize.cs
- LinqDataSourceEditData.cs
- QualificationDataItem.cs
- RegexBoyerMoore.cs
- ZoneLinkButton.cs
- XmlAttribute.cs
- XamlTypeMapper.cs
- HtmlGenericControl.cs
- ISO2022Encoding.cs
- BaseServiceProvider.cs
- DataTableExtensions.cs
- Vector3dCollection.cs
- StatusBarPanelClickEvent.cs
- AdjustableArrowCap.cs
- SuppressMergeCheckAttribute.cs
- SuppressMergeCheckAttribute.cs
- SafeNativeMethods.cs
- columnmapkeybuilder.cs
- Timeline.cs
- ListView.cs
- designeractionbehavior.cs
- SqlServer2KCompatibilityCheck.cs
- EqualityComparer.cs
- FileRegion.cs
- NavigatingCancelEventArgs.cs
- AttributeCollection.cs
- CheckBoxFlatAdapter.cs
- TreeNode.cs
- RepeatBehavior.cs
- X509SecurityTokenAuthenticator.cs
- MediaElement.cs
- SocketException.cs
- MediaContext.cs
- SqlCaseSimplifier.cs
- ManualWorkflowSchedulerService.cs
- OdbcConnectionHandle.cs
- ExpressionBuilderCollection.cs
- Identity.cs
- StrokeIntersection.cs
- SafeFileMappingHandle.cs
- XmlSchemaException.cs
- SkipQueryOptionExpression.cs
- DataViewSetting.cs
- CreateUserWizard.cs
- DataBindingValueUIHandler.cs
- CompiledRegexRunnerFactory.cs
- AllowedAudienceUriElementCollection.cs
- WindowsUpDown.cs
- PassportAuthentication.cs
- VScrollProperties.cs
- UriExt.cs
- TextServicesDisplayAttributePropertyRanges.cs
- DrawingGroup.cs
- DataGridViewButtonColumn.cs
- NumericPagerField.cs
- IImplicitResourceProvider.cs
- MultipleViewProviderWrapper.cs
- HandleRef.cs
- ZipIOModeEnforcingStream.cs
- SearchForVirtualItemEventArgs.cs
- HandlerWithFactory.cs
- TraceUtility.cs
- LinkedResource.cs
- DeploymentSection.cs
- XsltCompileContext.cs
- ValidationError.cs
- CheckBoxPopupAdapter.cs
- SqlXml.cs
- ListViewTableRow.cs
- StringBuilder.cs
- ConstantCheck.cs
- ControlSerializer.cs
- XmlSchemaExternal.cs
- DataServiceResponse.cs
- StringCollection.cs
- SourceLineInfo.cs
- ReadOnlyDictionary.cs
- ButtonAutomationPeer.cs
- HostedImpersonationContext.cs
- MenuCommand.cs
- WindowsButton.cs
- UniqueIdentifierService.cs
- RegexGroup.cs
- X509CertificateStore.cs
- Page.cs
- DecimalAnimationUsingKeyFrames.cs
- DataGridViewLayoutData.cs
- ExecutionPropertyManager.cs
- InstalledVoice.cs
- Base64Encoding.cs
- EmbeddedMailObject.cs
- ScrollViewer.cs
- TouchesCapturedWithinProperty.cs