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
- unsafenativemethodsother.cs
- SafeProcessHandle.cs
- PropertyEmitterBase.cs
- GridItem.cs
- CodeDesigner.cs
- ObjectRef.cs
- XmlLinkedNode.cs
- InputProviderSite.cs
- Activity.cs
- EncryptedPackage.cs
- DecoderReplacementFallback.cs
- RolePrincipal.cs
- CodeAccessSecurityEngine.cs
- FileSystemEventArgs.cs
- TTSEngineProxy.cs
- ServiceModelDictionary.cs
- TabItemAutomationPeer.cs
- RoleBoolean.cs
- SortExpressionBuilder.cs
- TableSectionStyle.cs
- BitmapEncoder.cs
- ErrorRuntimeConfig.cs
- ColumnMapVisitor.cs
- SqlDataSourceQueryConverter.cs
- URL.cs
- BindingGroup.cs
- NativeMethods.cs
- TrustManagerPromptUI.cs
- CorePropertiesFilter.cs
- QilUnary.cs
- compensatingcollection.cs
- SignatureToken.cs
- SqlSelectStatement.cs
- SqlClientWrapperSmiStreamChars.cs
- ListenerAdapterBase.cs
- TreeNodeCollection.cs
- IconBitmapDecoder.cs
- LogEntryHeaderDeserializer.cs
- FigureHelper.cs
- LambdaValue.cs
- SectionVisual.cs
- TaskFormBase.cs
- ImpersonateTokenRef.cs
- ToolStripRendererSwitcher.cs
- InputMethodStateChangeEventArgs.cs
- DesignerProperties.cs
- DeferredTextReference.cs
- HandleRef.cs
- GroupBoxAutomationPeer.cs
- PassportAuthentication.cs
- Rect.cs
- FormConverter.cs
- ContextMenuStripGroup.cs
- StringWriter.cs
- Sequence.cs
- Transform.cs
- RegistrySecurity.cs
- TakeQueryOptionExpression.cs
- RowCache.cs
- ViewPort3D.cs
- EnumerationRangeValidationUtil.cs
- TextTreeUndoUnit.cs
- XmlSchemaSimpleContentRestriction.cs
- UpDownBase.cs
- EditingMode.cs
- CollectionChangedEventManager.cs
- DataObjectFieldAttribute.cs
- DbgCompiler.cs
- FileCodeGroup.cs
- figurelengthconverter.cs
- ThreadStaticAttribute.cs
- ComplexTypeEmitter.cs
- XmlQueryType.cs
- DataGridViewImageCell.cs
- LongValidatorAttribute.cs
- DrawItemEvent.cs
- ContentOperations.cs
- ImagingCache.cs
- InProcStateClientManager.cs
- CodeTypeReferenceExpression.cs
- Array.cs
- RestHandlerFactory.cs
- ElementNotAvailableException.cs
- WinEventQueueItem.cs
- ForceCopyBuildProvider.cs
- XmlNavigatorStack.cs
- LayoutManager.cs
- DynamicRouteExpression.cs
- InkCanvasFeedbackAdorner.cs
- DbReferenceCollection.cs
- SplitterEvent.cs
- StringAttributeCollection.cs
- MbpInfo.cs
- NetworkAddressChange.cs
- MessageEventSubscriptionService.cs
- ServicePointManager.cs
- ServiceNameCollection.cs
- LogFlushAsyncResult.cs
- ReliabilityContractAttribute.cs
- Recipient.cs