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
- ControlCachePolicy.cs
- ReadOnlyNameValueCollection.cs
- PenCursorManager.cs
- ZipFileInfo.cs
- RawStylusSystemGestureInputReport.cs
- SelectionBorderGlyph.cs
- ClientOptions.cs
- DataGridViewRowPostPaintEventArgs.cs
- SerializerProvider.cs
- CodeBlockBuilder.cs
- TimeSpanValidatorAttribute.cs
- XmlBinaryReader.cs
- DropDownHolder.cs
- ScriptControl.cs
- TextViewBase.cs
- ListBoxItemWrapperAutomationPeer.cs
- TextElementCollection.cs
- WebPartUtil.cs
- StringComparer.cs
- MD5CryptoServiceProvider.cs
- QueryableFilterUserControl.cs
- wmiprovider.cs
- CodeMethodInvokeExpression.cs
- TraceHwndHost.cs
- BrowserDefinition.cs
- KeyConverter.cs
- FileDialogCustomPlacesCollection.cs
- DelimitedListTraceListener.cs
- CriticalFinalizerObject.cs
- ListItemCollection.cs
- XamlFrame.cs
- COM2ExtendedUITypeEditor.cs
- CategoryEditor.cs
- DataGridViewToolTip.cs
- CommandManager.cs
- TextElementCollectionHelper.cs
- RawMouseInputReport.cs
- NavigationCommands.cs
- VectorCollectionConverter.cs
- Guid.cs
- DropShadowBitmapEffect.cs
- CqlParserHelpers.cs
- HtmlMeta.cs
- SpAudioStreamWrapper.cs
- StringPropertyBuilder.cs
- StackOverflowException.cs
- CompilerHelpers.cs
- MultipartIdentifier.cs
- PropertyEmitter.cs
- WaitHandleCannotBeOpenedException.cs
- GridViewColumnCollection.cs
- JsonDeserializer.cs
- ZipIOModeEnforcingStream.cs
- OrderPreservingMergeHelper.cs
- PrintDialog.cs
- MouseButton.cs
- DnsPermission.cs
- FlowDocumentPaginator.cs
- GlyphRun.cs
- AmbientValueAttribute.cs
- DragStartedEventArgs.cs
- ComplexLine.cs
- DefaultTraceListener.cs
- RoutedCommand.cs
- UIElement3D.cs
- ServiceObjectContainer.cs
- AssemblyCacheEntry.cs
- ObjectDataProvider.cs
- XmlSerializerFactory.cs
- EmptyControlCollection.cs
- Range.cs
- HeaderFilter.cs
- GestureRecognitionResult.cs
- WebPartTransformerAttribute.cs
- FillErrorEventArgs.cs
- SoapInteropTypes.cs
- Part.cs
- ManagedWndProcTracker.cs
- securestring.cs
- FixedPageAutomationPeer.cs
- ToolStripDesignerUtils.cs
- SessionStateContainer.cs
- CheckedListBox.cs
- CompressedStack.cs
- KeyGesture.cs
- LassoHelper.cs
- ExpressionBindingsDialog.cs
- XsltContext.cs
- TextBox.cs
- MediaContext.cs
- WorkflowTerminatedException.cs
- BindingNavigatorDesigner.cs
- FixedBufferAttribute.cs
- CardSpaceException.cs
- InternalControlCollection.cs
- ReadOnlyDataSourceView.cs
- MarkupExtensionSerializer.cs
- InstanceDataCollectionCollection.cs
- SqlUserDefinedTypeAttribute.cs
- Main.cs