Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Core.Presentation / System / Activities / Core / Presentation / CaseDesigner.xaml.cs / 1305376 / CaseDesigner.xaml.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Core.Presentation { using System.Activities.Presentation; using System.Activities.Presentation.View; using System.Activities.Presentation.Metadata; using System.Activities.Presentation.Model; using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Input; using System.Windows.Threading; partial class CaseDesigner { public CaseDesigner() { this.InitializeComponent(); this.Loaded += (sender, e) => { Selection selection = this.Context.Items.GetValue(); if (selection != null) { ModelItem primarySelection = selection.PrimarySelection; this.ExpandState = SwitchDesigner.IsDescendantOfCase(this.ModelItem, primarySelection); if (this.ExpandState) { // If current focus is at another part, we need to focus this designer // to trigger selection changed, then this part will expand and another // expanded part will collapse. Then we focus on the activity it contains // if there is one. Keyboard.Focus((IInputElement)this.ModelItem.View); if (primarySelection.View != null && this.ModelItem != primarySelection) { Keyboard.Focus((IInputElement)primarySelection.View); } } } }; } // When the CaseDesigner is collapsed, its CaseKeyBox will be disabled. Thus CaseKeyBox.RegainFocus() doesn't // work in such situation, we must re-focus the CaseDesigner to expand it first to re-enable the CaseKeyBox. // This situation happens when inputting and invalid case key value and clicking on another Case or Default in // the same parent SwitchDesigner. public Action FocusSelf { get { return (ckb) => { Keyboard.Focus((IInputElement)this); }; } } public static void RegisterMetadata(AttributeTableBuilder builder) { Type type = typeof(ModelItemKeyValuePair<,>); builder.AddCustomAttributes(type, new DesignerAttribute(typeof(CaseDesigner))); builder.AddCustomAttributes(type, type.GetProperty("Value"), BrowsableAttribute.No); builder.AddCustomAttributes(type, new ActivityDesignerOptionsAttribute { AllowDrillIn = false }); } void AttachDisplayName() { AttachedPropertiesService attachedPropertiesService = this.Context.Services.GetService (); Fx.Assert(attachedPropertiesService != null, "AttachedPropertiesService is not available."); Type modelItemType = this.ModelItem.ItemType; foreach (AttachedProperty property in attachedPropertiesService.GetAttachedProperties(modelItemType)) { if (property.Name == "DisplayName" && property.OwnerType == modelItemType) { return; } } AttachedProperty displayNameProperty = new AttachedProperty { Name = "DisplayName", OwnerType = modelItemType, Getter = (modelItem) => { return "Case"; } }; attachedPropertiesService.AddProperty(displayNameProperty); } protected override void OnModelItemChanged(object newItem) { base.OnModelItemChanged(newItem); this.AttachDisplayName(); } protected override void OnMouseDown(MouseButtonEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2) { SwitchTryCatchDesignerHelper.MakeParentRootDesigner (this); e.Handled = true; } else if (e.LeftButton == MouseButtonState.Pressed) { Keyboard.Focus(this); e.Handled = true; } else if (e.RightButton == MouseButtonState.Pressed) { if (this.ShowExpanded) { Keyboard.Focus(this); } e.Handled = true; } } protected override void OnMouseUp(MouseButtonEventArgs e) { // avoid context menu upon right-click when it's collapsed if (!this.ShowExpanded && e.RightButton == MouseButtonState.Released) { e.Handled = true; } } } } // 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
- ImageButton.cs
- BuilderElements.cs
- PageRanges.cs
- InvalidOperationException.cs
- BaseCAMarshaler.cs
- ActivityCodeDomSerializer.cs
- ByteStack.cs
- SymbolType.cs
- EventProxy.cs
- UInt32.cs
- XmlSchemaImporter.cs
- WebBrowserNavigatedEventHandler.cs
- StandardCommands.cs
- FontStyle.cs
- ColorBlend.cs
- InstanceDataCollectionCollection.cs
- BufferedStream.cs
- DataGridViewCellValidatingEventArgs.cs
- QilInvokeEarlyBound.cs
- NonSerializedAttribute.cs
- VolatileEnlistmentState.cs
- ListViewContainer.cs
- DateTimeConverter2.cs
- DesignTimeData.cs
- CurrentChangedEventManager.cs
- SystemSounds.cs
- MissingMemberException.cs
- CodeGroup.cs
- FormatException.cs
- Vector3DCollectionValueSerializer.cs
- ExpressionBuilderCollection.cs
- BitmapEffect.cs
- DiscoveryReference.cs
- EntityStoreSchemaFilterEntry.cs
- DefaultValueConverter.cs
- GenerateHelper.cs
- ShutDownListener.cs
- Timer.cs
- OptimalBreakSession.cs
- CookieHandler.cs
- PersonalizationProviderHelper.cs
- EditorAttribute.cs
- PrimarySelectionGlyph.cs
- ThumbAutomationPeer.cs
- WorkflowTransactionOptions.cs
- DataRecord.cs
- RotateTransform.cs
- CodeAccessSecurityEngine.cs
- CodeDelegateInvokeExpression.cs
- EntityTypeEmitter.cs
- httpstaticobjectscollection.cs
- ImmutableCollection.cs
- Debug.cs
- HttpChannelFactory.cs
- SystemPens.cs
- ColorConverter.cs
- ShutDownListener.cs
- ErrorsHelper.cs
- ResourcesChangeInfo.cs
- MimePart.cs
- HitTestResult.cs
- WebPartRestoreVerb.cs
- HashStream.cs
- SlipBehavior.cs
- DragCompletedEventArgs.cs
- TableAdapterManagerHelper.cs
- EventArgs.cs
- SchemaNamespaceManager.cs
- ResourceDictionary.cs
- TemplateParser.cs
- SourceSwitch.cs
- PointAnimationBase.cs
- TextRunProperties.cs
- IERequestCache.cs
- MarshalDirectiveException.cs
- PageAdapter.cs
- SolidColorBrush.cs
- XmlName.cs
- StaticDataManager.cs
- TypeConverterMarkupExtension.cs
- ReadOnlyDictionary.cs
- SrgsGrammarCompiler.cs
- MetadataCache.cs
- PageThemeParser.cs
- ListBoxItemWrapperAutomationPeer.cs
- OrderedDictionary.cs
- SqlDataSourceQueryEditorForm.cs
- SqlProvider.cs
- TCEAdapterGenerator.cs
- DataGridViewCellStyleConverter.cs
- ColorBlend.cs
- DataServiceQuery.cs
- CreateUserWizardStep.cs
- Pair.cs
- NativeMethods.cs
- ThreadInterruptedException.cs
- CodeNamespaceImportCollection.cs
- ManifestResourceInfo.cs
- Privilege.cs
- OdbcRowUpdatingEvent.cs