Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Core.Presentation / System / Activities / Core / Presentation / AssignDesigner.xaml.cs / 1305376 / AssignDesigner.xaml.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Core.Presentation { using System.Activities.Presentation; using System.Activities.Presentation.Metadata; using System.Activities.Statements; using System.ComponentModel; using System.Activities.Presentation.Model; using System.Runtime; using Microsoft.VisualBasic.Activities; using System.Reflection; partial class AssignDesigner { const string ToPropertyName = "To"; const string ValuePropertyName = "Value"; PropertyChangedEventHandler modelItemPropertyChangedHandler; public AssignDesigner() { this.InitializeComponent(); } PropertyChangedEventHandler ModelItemPropertyChangedHandler { get { if (this.modelItemPropertyChangedHandler == null) { this.modelItemPropertyChangedHandler = new PropertyChangedEventHandler(modelItem_PropertyChanged); } return this.modelItemPropertyChangedHandler; } } protected override void OnInitialized(EventArgs e) { base.OnInitialized(e); this.Unloaded += (sender, eventArgs) => { AssignDesigner designer = sender as AssignDesigner; if (designer != null && designer.ModelItem != null) { designer.ModelItem.PropertyChanged -= designer.ModelItemPropertyChangedHandler; } }; } internal static void RegisterMetadata(AttributeTableBuilder builder) { Type assignType = typeof(Assign); builder.AddCustomAttributes(assignType, new DesignerAttribute(typeof(AssignDesigner))); builder.AddCustomAttributes(assignType, new ActivityDesignerOptionsAttribute { AllowDrillIn = false }); ArgumentFixer.RegisterArgumentFixer( new ActivityArgumentFixer( (assign, isLocation) => isLocation ? (Argument)assign.To : (Argument)assign.Value, (assign, argument) => { if (argument is InArgument) { assign.Value = (InArgument)argument; } else { assign.To = (OutArgument)argument; } })); } protected override void OnModelItemChanged(object newItem) { ModelItem modelItem = newItem as ModelItem; if (modelItem != null) { modelItem.PropertyChanged += ModelItemPropertyChangedHandler; } base.OnModelItemChanged(newItem); } void modelItem_PropertyChanged(object sender, PropertyChangedEventArgs e) { //if the To argument has changed, we may need to update the Value argument's type if (e.PropertyName == ToPropertyName) { Fx.Assert(this.ModelItem != null, "modelItem could not be null if we recent property changed event from it"); ModelProperty valueProperty = this.ModelItem.Properties[ValuePropertyName]; ModelProperty toProperty = this.ModelItem.Properties[ToPropertyName]; Fx.Assert(valueProperty != null, "Value model property could not be null"); Fx.Assert(toProperty != null, "To model property could not be null"); Argument value = valueProperty.ComputedValue as Argument; Argument to = toProperty.ComputedValue as Argument; if (value != null) { Type targetType = to == null? typeof(object) : to.ArgumentType; if (value.ArgumentType != targetType) { valueProperty.SetValue(MorphHelpers.MorphArgument(valueProperty.Value, targetType)); } } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlCollation.cs
- MeasureItemEvent.cs
- AsymmetricAlgorithm.cs
- ListSourceHelper.cs
- CodeTypeReferenceCollection.cs
- TraceContext.cs
- Console.cs
- EntryPointNotFoundException.cs
- BitmapMetadataEnumerator.cs
- XmlSchemaNotation.cs
- HandlerWithFactory.cs
- UnsafeNativeMethodsPenimc.cs
- GenericPrincipal.cs
- ParserStreamGeometryContext.cs
- GeometryValueSerializer.cs
- ButtonChrome.cs
- PrimitiveDataContract.cs
- QueryExpr.cs
- ServiceReference.cs
- AnnotationDocumentPaginator.cs
- XmlReflectionImporter.cs
- ImageIndexConverter.cs
- KnownTypeHelper.cs
- GACMembershipCondition.cs
- SymLanguageType.cs
- UInt16.cs
- XDRSchema.cs
- RoutingSection.cs
- SchemaSetCompiler.cs
- DataControlPagerLinkButton.cs
- BindingOperations.cs
- BinaryUtilClasses.cs
- SourceLineInfo.cs
- PageParser.cs
- _LocalDataStore.cs
- GlyphTypeface.cs
- UpdatePanelTriggerCollection.cs
- ListViewTableCell.cs
- ConnectionModeReader.cs
- Size3D.cs
- SQLResource.cs
- ContextTokenTypeConverter.cs
- MediaElementAutomationPeer.cs
- TimeSpanMinutesConverter.cs
- DataViewListener.cs
- Int32CAMarshaler.cs
- GZipStream.cs
- WorkflowPersistenceService.cs
- MessageSecurityOverTcp.cs
- BezierSegment.cs
- oledbmetadatacollectionnames.cs
- ProgressBarHighlightConverter.cs
- ECDiffieHellmanCng.cs
- recordstatefactory.cs
- DeviceContexts.cs
- x509utils.cs
- FontNameConverter.cs
- HitTestDrawingContextWalker.cs
- _HeaderInfo.cs
- XmlTypeMapping.cs
- CleanUpVirtualizedItemEventArgs.cs
- PointAnimationClockResource.cs
- HttpResponseWrapper.cs
- TdsParserStaticMethods.cs
- EncoderNLS.cs
- OnOperation.cs
- SubpageParaClient.cs
- HandlerMappingMemo.cs
- LinearKeyFrames.cs
- ProxyAttribute.cs
- filewebresponse.cs
- SizeAnimation.cs
- HttpDictionary.cs
- DataSourceXmlSerializationAttribute.cs
- AttributeCollection.cs
- DataViewManagerListItemTypeDescriptor.cs
- AnnotationResource.cs
- ParallelLoopState.cs
- BrowserCapabilitiesCodeGenerator.cs
- x509utils.cs
- ObjectKeyFrameCollection.cs
- TabRenderer.cs
- DataGridCellsPresenter.cs
- PersonalizableTypeEntry.cs
- BamlLocalizer.cs
- StateManagedCollection.cs
- XmlAttributes.cs
- SqlConnectionFactory.cs
- WebPartVerb.cs
- TypeResolver.cs
- EnumValAlphaComparer.cs
- CopyAttributesAction.cs
- CounterNameConverter.cs
- XmlFormatMapping.cs
- ConstructorBuilder.cs
- NativeCppClassAttribute.cs
- StorageMappingItemCollection.cs
- GPRECTF.cs
- DeferredTextReference.cs
- MenuAdapter.cs