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
- SQLMembershipProvider.cs
- StringDictionary.cs
- PrivilegeNotHeldException.cs
- UserControlBuildProvider.cs
- Preprocessor.cs
- SystemIPv4InterfaceProperties.cs
- TypeConverterHelper.cs
- DrawToolTipEventArgs.cs
- RootBuilder.cs
- XmlRootAttribute.cs
- SQLBinary.cs
- FilterElement.cs
- ChtmlImageAdapter.cs
- FormsAuthentication.cs
- XmlDocument.cs
- QueryResult.cs
- AssemblyCache.cs
- CodeTypeParameter.cs
- Wildcard.cs
- MatrixTransform.cs
- MD5CryptoServiceProvider.cs
- DataBoundControl.cs
- LoginDesigner.cs
- RadioButtonAutomationPeer.cs
- XmlSchemaAppInfo.cs
- ObjectSecurity.cs
- FixedBufferAttribute.cs
- X509CertificateStore.cs
- DebugView.cs
- mediaeventargs.cs
- HelpProvider.cs
- DesignerVerbCollection.cs
- DelegatedStream.cs
- XmlSyndicationContent.cs
- ChannelParameterCollection.cs
- UserControlDesigner.cs
- ProfileSection.cs
- DoubleAnimation.cs
- PropertyInfoSet.cs
- Msec.cs
- ObjectCloneHelper.cs
- VoiceInfo.cs
- FieldNameLookup.cs
- TypeGeneratedEventArgs.cs
- Transform.cs
- LOSFormatter.cs
- TagPrefixInfo.cs
- SmiRequestExecutor.cs
- Timer.cs
- SqlColumnizer.cs
- Typography.cs
- Compilation.cs
- PopupEventArgs.cs
- IConvertible.cs
- ImageCodecInfoPrivate.cs
- MgmtConfigurationRecord.cs
- AuthenticationSection.cs
- CollectionType.cs
- TemplatedControlDesigner.cs
- TextTreeRootNode.cs
- WmiInstallComponent.cs
- CompressionTransform.cs
- SafeFileMappingHandle.cs
- WebServiceData.cs
- PackageRelationshipCollection.cs
- Win32Native.cs
- CodeDomSerializerBase.cs
- InheritanceRules.cs
- ToolStripProgressBar.cs
- XmlSchemaType.cs
- SmiConnection.cs
- Floater.cs
- _OSSOCK.cs
- CaseStatement.cs
- TileBrush.cs
- DispatchChannelSink.cs
- DataControlCommands.cs
- MatrixAnimationBase.cs
- CharConverter.cs
- EventPropertyMap.cs
- LinkedList.cs
- XsdValidatingReader.cs
- AttributeProviderAttribute.cs
- DataGridViewCellPaintingEventArgs.cs
- DataServiceBehavior.cs
- WaitForChangedResult.cs
- EntityContainer.cs
- CalendarData.cs
- ConcurrentDictionary.cs
- GridItem.cs
- ComponentManagerBroker.cs
- TrackingAnnotationCollection.cs
- ScrollChangedEventArgs.cs
- HandlerBase.cs
- FactoryGenerator.cs
- ApplicationGesture.cs
- CollectionChangeEventArgs.cs
- ParentQuery.cs
- ValidationRuleCollection.cs
- DecoderReplacementFallback.cs