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
- OutputCacheModule.cs
- CorePropertiesFilter.cs
- oledbmetadatacolumnnames.cs
- TableDetailsRow.cs
- WindowsMenu.cs
- AppSettingsReader.cs
- CodeDirectiveCollection.cs
- PrintDialogException.cs
- WebPartRestoreVerb.cs
- SiteMapNode.cs
- StringConcat.cs
- ObjectDesignerDataSourceView.cs
- HandleCollector.cs
- ProgressPage.cs
- RowUpdatedEventArgs.cs
- DecoratedNameAttribute.cs
- ColumnMapTranslator.cs
- CertificateReferenceElement.cs
- SoapCommonClasses.cs
- HtmlGenericControl.cs
- ACL.cs
- SmiContextFactory.cs
- ClientSideQueueItem.cs
- RegexRunnerFactory.cs
- BinaryReader.cs
- SchemaElement.cs
- OAVariantLib.cs
- InvalidPrinterException.cs
- XmlBinaryReader.cs
- IntranetCredentialPolicy.cs
- TableColumnCollection.cs
- EditorPartChrome.cs
- WinEventTracker.cs
- SessionStateModule.cs
- Internal.cs
- AccessibilityHelperForVista.cs
- PathFigureCollection.cs
- XmlSchemaRedefine.cs
- DataColumnMapping.cs
- SharedUtils.cs
- SecurityUtils.cs
- DrawingCollection.cs
- ApplicationServiceHelper.cs
- AuditLogLocation.cs
- PeerApplicationLaunchInfo.cs
- Semaphore.cs
- VirtualStackFrame.cs
- _HelperAsyncResults.cs
- PrinterUnitConvert.cs
- ExpressionBuilderCollection.cs
- HashMembershipCondition.cs
- QueryCursorEventArgs.cs
- NotConverter.cs
- RotateTransform3D.cs
- RepeatButtonAutomationPeer.cs
- newitemfactory.cs
- NavigationService.cs
- XhtmlBasicListAdapter.cs
- UnsafeNetInfoNativeMethods.cs
- SafeSecurityHelper.cs
- MobileListItem.cs
- CategoriesDocument.cs
- ColorPalette.cs
- NavigatorOutput.cs
- ScrollViewerAutomationPeer.cs
- SymbolEqualComparer.cs
- MarginCollapsingState.cs
- FilteredXmlReader.cs
- ThreadExceptionEvent.cs
- HashSetDebugView.cs
- ArrayWithOffset.cs
- VirtualizingStackPanel.cs
- IApplicationTrustManager.cs
- XmlSchemaAny.cs
- SecurityContextKeyIdentifierClause.cs
- PathFigureCollectionConverter.cs
- ResourceSetExpression.cs
- StatusBarAutomationPeer.cs
- Merger.cs
- Icon.cs
- MenuAutomationPeer.cs
- XmlDataSourceDesigner.cs
- DataGridViewCellMouseEventArgs.cs
- VectorConverter.cs
- OuterGlowBitmapEffect.cs
- cookieexception.cs
- ColumnClickEvent.cs
- CallbackDebugBehavior.cs
- TextEditorParagraphs.cs
- PointUtil.cs
- ElementInit.cs
- HyperLinkColumn.cs
- TypeLibConverter.cs
- EntityKeyElement.cs
- ValueOfAction.cs
- SplitterPanelDesigner.cs
- ButtonFieldBase.cs
- SqlDataSourceCache.cs
- WebPartConnectionsCloseVerb.cs
- BufferBuilder.cs