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
- DataColumn.cs
- TaskResultSetter.cs
- CodeDomConfigurationHandler.cs
- HitTestParameters3D.cs
- XAMLParseException.cs
- Pens.cs
- SmtpReplyReader.cs
- DES.cs
- ReferentialConstraint.cs
- ApplicationActivator.cs
- StrongNamePublicKeyBlob.cs
- XMLSchema.cs
- TokenizerHelper.cs
- TextRangeAdaptor.cs
- TypePropertyEditor.cs
- SHA256Cng.cs
- XmlAutoDetectWriter.cs
- StorageMappingItemCollection.cs
- Trace.cs
- InputMethod.cs
- MemberMaps.cs
- ActivityExecutor.cs
- ContextMenuAutomationPeer.cs
- Point3D.cs
- SessionEndedEventArgs.cs
- BufferedResponseStream.cs
- Trigger.cs
- SubMenuStyle.cs
- Point3DKeyFrameCollection.cs
- FixUp.cs
- ProjectionCamera.cs
- ActiveXContainer.cs
- BitmapEffectInput.cs
- ClientSideProviderDescription.cs
- TextRenderer.cs
- Dispatcher.cs
- CompilationRelaxations.cs
- CheckPair.cs
- XPathMultyIterator.cs
- ParseHttpDate.cs
- SqlNodeAnnotation.cs
- SoapInteropTypes.cs
- HandlerFactoryCache.cs
- DataSourceSelectArguments.cs
- ParserHooks.cs
- MulticastDelegate.cs
- PathData.cs
- UrlParameterWriter.cs
- EventDescriptor.cs
- RowParagraph.cs
- ImageField.cs
- dtdvalidator.cs
- ZipIOLocalFileBlock.cs
- Console.cs
- BufferedGraphicsContext.cs
- JpegBitmapDecoder.cs
- ObjectAssociationEndMapping.cs
- Wildcard.cs
- HttpContextBase.cs
- Events.cs
- TemplateField.cs
- GroupByExpressionRewriter.cs
- PointConverter.cs
- TemplateColumn.cs
- MsmqException.cs
- EpmSyndicationContentSerializer.cs
- ApplicationId.cs
- SamlSecurityToken.cs
- ProcessProtocolHandler.cs
- UITypeEditor.cs
- BrowserCapabilitiesFactory.cs
- UpdateManifestForBrowserApplication.cs
- SelectionEditor.cs
- BidirectionalDictionary.cs
- Interlocked.cs
- SignatureHelper.cs
- Clipboard.cs
- MoveSizeWinEventHandler.cs
- GeometryCollection.cs
- SqlConnectionPoolGroupProviderInfo.cs
- XomlCompilerResults.cs
- HashSetDebugView.cs
- ExpandoClass.cs
- TextHidden.cs
- IgnoreSectionHandler.cs
- Speller.cs
- TimeoutValidationAttribute.cs
- PrintDialog.cs
- MetadataItemEmitter.cs
- CompilerInfo.cs
- SqlBulkCopyColumnMappingCollection.cs
- Range.cs
- RowCache.cs
- CodeDomComponentSerializationService.cs
- SQLMoney.cs
- MouseGesture.cs
- RegexGroup.cs
- WebPartCollection.cs
- IPAddressCollection.cs
- Helper.cs