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
- SqlDataSourceQuery.cs
- StateMachine.cs
- DataConnectionHelper.cs
- SQLDouble.cs
- KeyboardNavigation.cs
- IInstanceTable.cs
- ClosableStream.cs
- DataQuery.cs
- SimpleNameService.cs
- CultureInfoConverter.cs
- DataGridViewSelectedRowCollection.cs
- InkCanvasSelectionAdorner.cs
- WebResourceAttribute.cs
- TemplateXamlParser.cs
- EmptyEnumerator.cs
- DataSpaceManager.cs
- ZipIOBlockManager.cs
- SQLSingleStorage.cs
- Compiler.cs
- ValidatorUtils.cs
- TreeWalker.cs
- UnmanagedBitmapWrapper.cs
- ExceptionValidationRule.cs
- PackageStore.cs
- RegexTree.cs
- ProgressBar.cs
- PersianCalendar.cs
- BuildResultCache.cs
- ListItemConverter.cs
- SqlBulkCopy.cs
- ToolStripItemClickedEventArgs.cs
- ContentType.cs
- TreeNodeBindingCollection.cs
- CommandEventArgs.cs
- TaiwanLunisolarCalendar.cs
- FlowDocumentReader.cs
- RowCache.cs
- WithParamAction.cs
- XamlPoint3DCollectionSerializer.cs
- EventLogger.cs
- DeflateStream.cs
- SQLMoneyStorage.cs
- StubHelpers.cs
- WebControlsSection.cs
- BooleanAnimationBase.cs
- AuthenticatedStream.cs
- ActivityTypeResolver.xaml.cs
- NetNamedPipeBindingCollectionElement.cs
- AuthenticateEventArgs.cs
- ArcSegment.cs
- XmlDocumentFragment.cs
- UdpDiscoveryEndpointProvider.cs
- SecurityHeader.cs
- SafeFindHandle.cs
- AQNBuilder.cs
- WhitespaceRule.cs
- ArrayWithOffset.cs
- FormViewDeletedEventArgs.cs
- DataControlFieldHeaderCell.cs
- LambdaCompiler.Unary.cs
- ImageDrawing.cs
- StringHandle.cs
- RemotingServices.cs
- CodeCommentStatementCollection.cs
- StyleModeStack.cs
- Point4DConverter.cs
- Line.cs
- MetricEntry.cs
- WindowsToolbar.cs
- ContentTextAutomationPeer.cs
- EpmAttributeNameBuilder.cs
- PixelFormatConverter.cs
- ImmutableAssemblyCacheEntry.cs
- SqlConnectionManager.cs
- ReadOnlyDictionary.cs
- FlatButtonAppearance.cs
- WindowsRichEdit.cs
- ServiceHttpHandlerFactory.cs
- Monitor.cs
- WaitHandleCannotBeOpenedException.cs
- ClientEventManager.cs
- CodeSubDirectory.cs
- SqlMethodTransformer.cs
- X509Extension.cs
- QilInvokeEarlyBound.cs
- DataServiceHost.cs
- XamlRtfConverter.cs
- SerializationAttributes.cs
- DataGridViewBand.cs
- COAUTHINFO.cs
- XmlSortKeyAccumulator.cs
- PtsCache.cs
- StateWorkerRequest.cs
- TextBox.cs
- SafeNativeMethodsOther.cs
- EncryptedKey.cs
- GridViewCommandEventArgs.cs
- DoubleCollection.cs
- OlePropertyStructs.cs
- ArrayTypeMismatchException.cs