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
- _SslSessionsCache.cs
- ObjectDataSourceFilteringEventArgs.cs
- Point4D.cs
- OperationDescription.cs
- NativeCppClassAttribute.cs
- CollectionContainer.cs
- DummyDataSource.cs
- ContentPresenter.cs
- ExtensionSimplifierMarkupObject.cs
- StringExpressionSet.cs
- wgx_render.cs
- DateRangeEvent.cs
- SettingsAttributeDictionary.cs
- StoryFragments.cs
- AuthorizationRuleCollection.cs
- TemplateControlCodeDomTreeGenerator.cs
- XmlObjectSerializerContext.cs
- NegationPusher.cs
- AuthenticationModuleElementCollection.cs
- HashMembershipCondition.cs
- ChannelBinding.cs
- transactioncontext.cs
- SqlError.cs
- GenericParameterDataContract.cs
- Graph.cs
- URLMembershipCondition.cs
- IisTraceListener.cs
- ZipIOBlockManager.cs
- ByteStack.cs
- MemberHolder.cs
- AmbientValueAttribute.cs
- BitmapEffectState.cs
- OutOfProcStateClientManager.cs
- DataGridDesigner.cs
- OdbcParameter.cs
- _CommandStream.cs
- ButtonChrome.cs
- ToggleButtonAutomationPeer.cs
- SmtpClient.cs
- log.cs
- DataBoundControlHelper.cs
- Utils.cs
- XMLSchema.cs
- StringExpressionSet.cs
- DefaultAssemblyResolver.cs
- PartialClassGenerationTask.cs
- RtfToXamlLexer.cs
- AutomationPropertyInfo.cs
- ChtmlCommandAdapter.cs
- UserControlCodeDomTreeGenerator.cs
- ControlUtil.cs
- LineProperties.cs
- MenuItemAutomationPeer.cs
- EntitySet.cs
- Emitter.cs
- PartialList.cs
- ViewKeyConstraint.cs
- SoapTypeAttribute.cs
- unsafenativemethodstextservices.cs
- TreeNodeStyle.cs
- ElementHostAutomationPeer.cs
- RunInstallerAttribute.cs
- SequenceDesignerAccessibleObject.cs
- SourceSwitch.cs
- RowParagraph.cs
- CrossSiteScriptingValidation.cs
- ViewCellSlot.cs
- MethodAccessException.cs
- TextBox.cs
- XslAst.cs
- CacheVirtualItemsEvent.cs
- SchemaImporter.cs
- DoubleSumAggregationOperator.cs
- TraceContextEventArgs.cs
- Converter.cs
- TextCompositionManager.cs
- ImageIndexConverter.cs
- ComPlusAuthorization.cs
- _SslStream.cs
- WebPartTracker.cs
- MtomMessageEncodingElement.cs
- StatusCommandUI.cs
- RegionInfo.cs
- Misc.cs
- M3DUtil.cs
- SqlRetyper.cs
- MultipleViewProviderWrapper.cs
- RectAnimationBase.cs
- Literal.cs
- WebChannelFactory.cs
- SqlCharStream.cs
- RemotingConfiguration.cs
- ProtectedConfiguration.cs
- InputLanguage.cs
- shaperfactoryquerycachekey.cs
- TypeCollectionDesigner.xaml.cs
- FormatVersion.cs
- Update.cs
- PointF.cs
- TextTrailingWordEllipsis.cs