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 / Data / PriorityBinding.cs / 1 / 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; // Collection
using 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 Collection Bindings
{
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);
}
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; // Collection
using 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 Collection Bindings
{
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);
}
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
- SizeAnimationBase.cs
- DesignerTransactionCloseEvent.cs
- DataColumn.cs
- UnsafeNativeMethods.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- TextServicesDisplayAttribute.cs
- ExtendedPropertyCollection.cs
- PtsContext.cs
- ILGenerator.cs
- EntitySet.cs
- BuildProviderAppliesToAttribute.cs
- TickBar.cs
- MenuBindingsEditor.cs
- SlotInfo.cs
- ToolStripDesignerUtils.cs
- SelfIssuedSamlTokenFactory.cs
- DataServiceRequest.cs
- XsltContext.cs
- RoleService.cs
- LocalizationParserHooks.cs
- KeyNotFoundException.cs
- LogicalMethodInfo.cs
- WindowsListView.cs
- ConnectivityStatus.cs
- EntitySqlQueryCacheKey.cs
- InvokeMethod.cs
- Convert.cs
- QilUnary.cs
- PreProcessInputEventArgs.cs
- ConsumerConnectionPoint.cs
- SamlAudienceRestrictionCondition.cs
- SqlConnectionStringBuilder.cs
- WindowsTab.cs
- XmlCDATASection.cs
- EnumUnknown.cs
- Latin1Encoding.cs
- SQLBinary.cs
- _FtpDataStream.cs
- AutoScrollHelper.cs
- Shared.cs
- NameTable.cs
- BaseParaClient.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- ProcessHostConfigUtils.cs
- handlecollector.cs
- ExpressionParser.cs
- PropertyTabAttribute.cs
- SimpleApplicationHost.cs
- SubstitutionList.cs
- validationstate.cs
- Vertex.cs
- PanelStyle.cs
- LogEntryHeaderDeserializer.cs
- EntityReference.cs
- IriParsingElement.cs
- XmlSchemaSimpleType.cs
- ComContractElementCollection.cs
- ScriptingProfileServiceSection.cs
- PKCS1MaskGenerationMethod.cs
- DictionarySectionHandler.cs
- BamlResourceDeserializer.cs
- PointValueSerializer.cs
- StreamSecurityUpgradeInitiatorBase.cs
- FlowPanelDesigner.cs
- ConfigXmlDocument.cs
- DispatchChannelSink.cs
- ApplicationManager.cs
- WizardPanelChangingEventArgs.cs
- _UncName.cs
- ListParagraph.cs
- _WinHttpWebProxyDataBuilder.cs
- TablePatternIdentifiers.cs
- DbProviderConfigurationHandler.cs
- TypeBuilderInstantiation.cs
- MultiBindingExpression.cs
- behaviorssection.cs
- TiffBitmapDecoder.cs
- ValidatorAttribute.cs
- QilFactory.cs
- Substitution.cs
- ToolStripPanelCell.cs
- NetworkStream.cs
- Menu.cs
- ColumnResizeAdorner.cs
- Utils.cs
- InitializationEventAttribute.cs
- TextTreeFixupNode.cs
- InputScopeNameConverter.cs
- ConstNode.cs
- SHA256Managed.cs
- WorkflowWebService.cs
- RadioButton.cs
- ActiveXSite.cs
- SourceLineInfo.cs
- IndicShape.cs
- PasswordDeriveBytes.cs
- Events.cs
- EditorBrowsableAttribute.cs
- XmlILIndex.cs
- TableProvider.cs