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
- SequenceDesignerAccessibleObject.cs
- FunctionParameter.cs
- ConfigXmlAttribute.cs
- ReadWriteObjectLock.cs
- GroupItem.cs
- TableParaClient.cs
- Utilities.cs
- RoutedEventArgs.cs
- JournalEntryListConverter.cs
- RealizationContext.cs
- CellTreeSimplifier.cs
- TableHeaderCell.cs
- XNodeNavigator.cs
- QilCloneVisitor.cs
- FormViewDeleteEventArgs.cs
- BufferBuilder.cs
- XmlWellformedWriter.cs
- AffineTransform3D.cs
- Int64.cs
- AnnotationAuthorChangedEventArgs.cs
- ECDiffieHellman.cs
- ProjectionAnalyzer.cs
- TagPrefixInfo.cs
- MethodToken.cs
- StreamGeometry.cs
- WebControlsSection.cs
- TreeViewDesigner.cs
- CharacterMetrics.cs
- ComponentDispatcherThread.cs
- ReflectPropertyDescriptor.cs
- HostingEnvironmentSection.cs
- SevenBitStream.cs
- RpcResponse.cs
- SqlReorderer.cs
- GZipDecoder.cs
- UIElementPropertyUndoUnit.cs
- FilterElement.cs
- Configuration.cs
- SpStreamWrapper.cs
- ResourceManager.cs
- InkCanvasAutomationPeer.cs
- FloaterParaClient.cs
- DesignBindingPropertyDescriptor.cs
- RegexTree.cs
- FloatUtil.cs
- AjaxFrameworkAssemblyAttribute.cs
- ClientTargetCollection.cs
- UdpTransportSettingsElement.cs
- Metadata.cs
- OrthographicCamera.cs
- Evidence.cs
- RIPEMD160Managed.cs
- RuntimeArgumentHandle.cs
- MemberMaps.cs
- CompiledScopeCriteria.cs
- LineInfo.cs
- MatrixCamera.cs
- StoreItemCollection.cs
- ADMembershipUser.cs
- InfoCardKeyedHashAlgorithm.cs
- SystemFonts.cs
- PersonalizationProviderHelper.cs
- CharacterMetricsDictionary.cs
- Cursor.cs
- ControlAdapter.cs
- CellParaClient.cs
- SqlProfileProvider.cs
- CommandTreeTypeHelper.cs
- DisplayInformation.cs
- RuleInfoComparer.cs
- OutputCacheModule.cs
- Int32EqualityComparer.cs
- EventLogger.cs
- AffineTransform3D.cs
- ICspAsymmetricAlgorithm.cs
- ResXResourceReader.cs
- Shape.cs
- ColumnReorderedEventArgs.cs
- BinaryParser.cs
- AccessDataSourceView.cs
- LocalizableResourceBuilder.cs
- ImageInfo.cs
- DefinitionUpdate.cs
- ClientTargetCollection.cs
- TextEditorTables.cs
- ContentOperations.cs
- XsdDuration.cs
- ValidationErrorCollection.cs
- FixedSOMTableRow.cs
- storepermissionattribute.cs
- SecurityBindingElement.cs
- StringValueConverter.cs
- ImageCodecInfoPrivate.cs
- AsyncContentLoadedEventArgs.cs
- MailWebEventProvider.cs
- DocumentPageView.cs
- DataServiceHostFactory.cs
- Columns.cs
- EpmContentDeSerializerBase.cs
- SetMemberBinder.cs