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
- AsyncStreamReader.cs
- CustomWebEventKey.cs
- StructuredTypeInfo.cs
- sqlnorm.cs
- ReflectionHelper.cs
- RightsManagementUser.cs
- XmlSchemaIdentityConstraint.cs
- ToolStripTextBox.cs
- DependencyProperty.cs
- Delegate.cs
- AtomPub10ServiceDocumentFormatter.cs
- DocumentScope.cs
- Variable.cs
- XmlLinkedNode.cs
- DataBoundLiteralControl.cs
- ModifierKeysValueSerializer.cs
- SemanticResultValue.cs
- ModuleBuilder.cs
- AudienceUriMode.cs
- VideoDrawing.cs
- HtmlSelect.cs
- _SSPIWrapper.cs
- ColorContext.cs
- EmptyImpersonationContext.cs
- Empty.cs
- StateMachineWorkflow.cs
- Util.cs
- SecurityManager.cs
- LinqDataSourceDeleteEventArgs.cs
- TableLayoutColumnStyleCollection.cs
- DefaultValueMapping.cs
- SafeCryptContextHandle.cs
- ObjectMemberMapping.cs
- ParagraphResult.cs
- StaticResourceExtension.cs
- SudsParser.cs
- NumberAction.cs
- XmlSchemaValidator.cs
- WriteableOnDemandStream.cs
- IRCollection.cs
- InstanceOwnerException.cs
- XamlPathDataSerializer.cs
- CodeObjectCreateExpression.cs
- Adorner.cs
- COM2PropertyDescriptor.cs
- SmiEventSink_DeferedProcessing.cs
- AttributeCollection.cs
- wgx_sdk_version.cs
- Nullable.cs
- ClientOptions.cs
- WebPartVerbCollection.cs
- MeshGeometry3D.cs
- CookieParameter.cs
- MessagingDescriptionAttribute.cs
- DoubleUtil.cs
- wgx_exports.cs
- MetadataItemSerializer.cs
- XmlEventCache.cs
- DirectoryInfo.cs
- ImageBrush.cs
- ADMembershipUser.cs
- ZipFileInfoCollection.cs
- FileInfo.cs
- ConfigurationSettings.cs
- TextBoxBase.cs
- DNS.cs
- ProcessHostFactoryHelper.cs
- UpdateProgress.cs
- IndependentAnimationStorage.cs
- StringExpressionSet.cs
- BackgroundWorker.cs
- GuidConverter.cs
- RenderingBiasValidation.cs
- CursorInteropHelper.cs
- XmlSecureResolver.cs
- PersonalizableTypeEntry.cs
- SecurityPolicySection.cs
- DescendantBaseQuery.cs
- RootAction.cs
- XsltQilFactory.cs
- ScrollProperties.cs
- DynamicMetaObject.cs
- ExpressionVisitor.cs
- StorageFunctionMapping.cs
- BasicExpandProvider.cs
- XmlDataLoader.cs
- SqlFacetAttribute.cs
- XmlSchemaComplexContent.cs
- MetabaseServerConfig.cs
- ApplicationServicesHostFactory.cs
- CheckBoxPopupAdapter.cs
- JsonDeserializer.cs
- DefaultShape.cs
- SecureConversationDriver.cs
- ConfigurationPropertyCollection.cs
- ObfuscateAssemblyAttribute.cs
- CallbackValidator.cs
- WebPartDescriptionCollection.cs
- TargetParameterCountException.cs
- Soap12ProtocolImporter.cs