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
- X509CertificateTrustedIssuerElement.cs
- DataServiceContext.cs
- SizeConverter.cs
- SiteMapNodeItemEventArgs.cs
- ConfigurationValidatorAttribute.cs
- SqlConnectionHelper.cs
- NamespaceTable.cs
- XmlCustomFormatter.cs
- SiteMapNodeCollection.cs
- RemotingConfiguration.cs
- ControlEvent.cs
- SqlCommand.cs
- IconBitmapDecoder.cs
- sqlmetadatafactory.cs
- Visitors.cs
- CodeDefaultValueExpression.cs
- GenericIdentity.cs
- EffectiveValueEntry.cs
- RemoveStoryboard.cs
- ClaimTypes.cs
- ProxyAttribute.cs
- HelpInfo.cs
- XamlFigureLengthSerializer.cs
- XmlWriterDelegator.cs
- ConnectionManagementElement.cs
- ListBindableAttribute.cs
- XmlParserContext.cs
- DataGridViewLayoutData.cs
- DbSourceCommand.cs
- StorageScalarPropertyMapping.cs
- WebHttpBinding.cs
- WebPartZoneBaseDesigner.cs
- WpfXamlMember.cs
- UntrustedRecipientException.cs
- DoubleConverter.cs
- Assembly.cs
- Math.cs
- IntegerFacetDescriptionElement.cs
- Faults.cs
- QualifiedCellIdBoolean.cs
- Speller.cs
- CqlLexer.cs
- XXXInfos.cs
- HttpWebRequestElement.cs
- SchemaSetCompiler.cs
- BuildProviderAppliesToAttribute.cs
- TablePatternIdentifiers.cs
- TreeNodeBindingCollection.cs
- UndoEngine.cs
- AttributeProviderAttribute.cs
- PropertyCollection.cs
- ListDictionaryInternal.cs
- XmlReflectionMember.cs
- RegularExpressionValidator.cs
- ContextMenuStripGroup.cs
- FtpCachePolicyElement.cs
- ConstructorBuilder.cs
- FormatControl.cs
- RelationshipEnd.cs
- NavigationProgressEventArgs.cs
- NotImplementedException.cs
- OleDbReferenceCollection.cs
- URL.cs
- DataGridViewCellPaintingEventArgs.cs
- QilGeneratorEnv.cs
- SynchronizingStream.cs
- StringStorage.cs
- TextBox.cs
- WindowsMenu.cs
- TypeToArgumentTypeConverter.cs
- ExceptionWrapper.cs
- FigureParagraph.cs
- httpstaticobjectscollection.cs
- PassportAuthenticationModule.cs
- DataControlPagerLinkButton.cs
- GACMembershipCondition.cs
- Content.cs
- ExpressionTable.cs
- Size3DConverter.cs
- ScriptResourceAttribute.cs
- InvalidDocumentContentsException.cs
- NameValueSectionHandler.cs
- NativeRightsManagementAPIsStructures.cs
- WebPartZone.cs
- ExternalFile.cs
- SqlWebEventProvider.cs
- ReflectionServiceProvider.cs
- DocumentOrderQuery.cs
- RefreshPropertiesAttribute.cs
- Point3D.cs
- CatalogPartChrome.cs
- RelationshipDetailsRow.cs
- StrongName.cs
- PointAnimationClockResource.cs
- MenuItemBinding.cs
- Dispatcher.cs
- ProgramPublisher.cs
- SafeWaitHandle.cs
- CodeIdentifiers.cs
- Wildcard.cs