Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / MultiDataTrigger.cs / 1 / MultiDataTrigger.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: Defines MultiDataTrigger object, akin to MultiTrigger except it // gets values from data. // //--------------------------------------------------------------------------- using MS.Utility; using System; using System.Diagnostics; using System.Collections.Specialized; using System.ComponentModel; using System.Windows.Data; using System.Windows.Markup; namespace System.Windows { ////// A multiple Style data conditional dependency driver /// [ContentProperty("Setters")] public sealed class MultiDataTrigger : TriggerBase, IAddChild { ////// Conditions collection /// [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ConditionCollection Conditions { get { // Verify Context Access VerifyAccess(); return _conditions; } } ////// Collection of Setter objects, which describes what to apply /// when this trigger is active. /// [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public SetterBaseCollection Setters { get { // Verify Context Access VerifyAccess(); if( _setters == null ) { _setters = new SetterBaseCollection(); } return _setters; } } ////// This method is called to Add a Setter object as a child of the Style. /// /// /// The object to add as a child; it must be a Setter or subclass. /// void IAddChild.AddChild (Object value) { // Verify Context Access VerifyAccess(); Setters.Add(Trigger.CheckChildIsSetter(value)); } ////// This method is called by the parser when text appears under the tag in markup. /// As default Styles do not support text, calling this method has no effect. /// /// /// Text to add as a child. /// void IAddChild.AddText (string text) { // Verify Context Access VerifyAccess(); XamlSerializerUtil.ThrowIfNonWhiteSpaceInAddText(text, this); } internal override void Seal() { if (IsSealed) { return; } // Process the _setters collection: Copy values into PropertyValueList and seal the Setter objects. ProcessSettersCollection(_setters); if (_conditions.Count > 0) { // Seal conditions _conditions.Seal(ValueLookupType.DataTrigger); } // Build conditions array from collection TriggerConditions = new TriggerCondition[_conditions.Count]; for (int i = 0; i < TriggerConditions.Length; ++i) { if (_conditions[i].SourceName != null && _conditions[i].SourceName.Length > 0) { throw new InvalidOperationException(SR.Get(SRID.SourceNameNotSupportedForDataTriggers)); } TriggerConditions[i] = new TriggerCondition( _conditions[i].Binding, LogicalOp.Equals, _conditions[i].Value); } // Set conditions array for all property triggers for (int i = 0; i < PropertyValues.Count; ++i) { PropertyValue propertyValue = PropertyValues[i]; propertyValue.Conditions = TriggerConditions; switch (propertyValue.ValueType) { case PropertyValueType.Trigger: propertyValue.ValueType = PropertyValueType.DataTrigger; break; case PropertyValueType.PropertyTriggerResource: propertyValue.ValueType = PropertyValueType.DataTriggerResource; break; default: throw new InvalidOperationException(SR.Get(SRID.UnexpectedValueTypeForDataTrigger, propertyValue.ValueType)); } // Put back modified struct PropertyValues[i] = propertyValue; } base.Seal(); } // evaluate the current state of the trigger internal override bool GetCurrentState(DependencyObject container, UncommonFielddataField) { bool retVal = (TriggerConditions.Length > 0); for( int i = 0; retVal && i < TriggerConditions.Length; i++ ) { retVal = TriggerConditions[i].ConvertAndMatch(StyleHelper.GetDataTriggerValue(dataField, container, TriggerConditions[i].Binding)); } return retVal; } private ConditionCollection _conditions = new ConditionCollection(); private SetterBaseCollection _setters = null; } } // 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
- VectorValueSerializer.cs
- SlipBehavior.cs
- IsolationInterop.cs
- HttpConfigurationSystem.cs
- MemberAccessException.cs
- IdentifierService.cs
- SerializationEventsCache.cs
- ClientBuildManager.cs
- NativeMethods.cs
- MetadataHelper.cs
- ListManagerBindingsCollection.cs
- ToolBarButton.cs
- ForwardPositionQuery.cs
- XPathAncestorQuery.cs
- GPRECTF.cs
- PolyBezierSegment.cs
- NavigateUrlConverter.cs
- InputLanguageEventArgs.cs
- ValueConversionAttribute.cs
- TagPrefixInfo.cs
- KeyEvent.cs
- XmlDownloadManager.cs
- EdmRelationshipRoleAttribute.cs
- EditBehavior.cs
- DataComponentGenerator.cs
- BinarySerializer.cs
- IgnoreDeviceFilterElementCollection.cs
- ProcessThread.cs
- ReadOnlyHierarchicalDataSource.cs
- PointConverter.cs
- ProtocolsConfigurationHandler.cs
- GrammarBuilderBase.cs
- PackWebResponse.cs
- WebControl.cs
- CommonXSendMessage.cs
- ObjectAnimationBase.cs
- StorageAssociationSetMapping.cs
- ContentType.cs
- WebPartMovingEventArgs.cs
- RowUpdatingEventArgs.cs
- ToolbarAUtomationPeer.cs
- Polygon.cs
- Byte.cs
- DesignerDataConnection.cs
- GraphicsContainer.cs
- CellCreator.cs
- MSHTMLHostUtil.cs
- RenderDataDrawingContext.cs
- ToolStripItemEventArgs.cs
- PropertyEmitterBase.cs
- ExponentialEase.cs
- DotNetATv1WindowsLogEntrySerializer.cs
- CustomAttribute.cs
- ReadOnlyCollectionBase.cs
- DateTimeFormat.cs
- Control.cs
- AllMembershipCondition.cs
- PersonalizableAttribute.cs
- ParallelQuery.cs
- FontClient.cs
- BitmapImage.cs
- OrderedEnumerableRowCollection.cs
- HttpCacheVaryByContentEncodings.cs
- JsonCollectionDataContract.cs
- EntityDataSourceStatementEditor.cs
- EntityDesignerUtils.cs
- DesignTimeData.cs
- StackBuilderSink.cs
- MDIControlStrip.cs
- PerformanceCounter.cs
- Vector3DConverter.cs
- CodeCastExpression.cs
- TerminatorSinks.cs
- DateTimeStorage.cs
- CompositeScriptReference.cs
- CfgRule.cs
- KeyInstance.cs
- SqlGenerator.cs
- CodeSubDirectoriesCollection.cs
- ColorKeyFrameCollection.cs
- BitmapMetadataEnumerator.cs
- NumberFormatInfo.cs
- ClientBuildManager.cs
- OptimalTextSource.cs
- DurationConverter.cs
- RegexStringValidator.cs
- WebControlAdapter.cs
- ClientSettingsSection.cs
- MimeTypePropertyAttribute.cs
- DateTimeConverter2.cs
- __Error.cs
- COM2ColorConverter.cs
- HashJoinQueryOperatorEnumerator.cs
- GroupItem.cs
- While.cs
- FixedPage.cs
- ObjectHandle.cs
- XMLDiffLoader.cs
- ListControlConvertEventArgs.cs
- ByteStreamGeometryContext.cs