void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: this.EditButton = ((System.Activities.Presentation.PropertyEditing.EditModeSwitchButton)(target)); return; } this._contentLoaded = true; }
private static object OnCoerceEditModeProperty(DependencyObject obj, object value) { EditModeSwitchButton theThis = (EditModeSwitchButton)obj; // Sync to the owning PropertyContainer only if requested to do so if (!theThis.SyncModeToOwningContainer) { return(value); } // Do we have an owning PropertyContainer? if (theThis._owningContainer == null) { return(value); } PropertyContainerEditMode newMode; PropertyContainer owningContainer = theThis._owningContainer; switch (owningContainer.ActiveEditMode) { case PropertyContainerEditMode.Inline: // when clicked, have this button switch to extended popup mode // or dialog mode (dialog takes precedence) if (owningContainer.SupportsEditMode(PropertyContainerEditMode.Dialog)) { newMode = PropertyContainerEditMode.Dialog; } else if (owningContainer.SupportsEditMode(PropertyContainerEditMode.ExtendedPopup)) { newMode = PropertyContainerEditMode.ExtendedPopup; } else { newMode = PropertyContainerEditMode.Inline; } break; case PropertyContainerEditMode.ExtendedPopup: // when clicked, have this button switch to extended pinned mode newMode = PropertyContainerEditMode.ExtendedPinned; break; case PropertyContainerEditMode.ExtendedPinned: // when clicked, have this button switch to inline mode newMode = PropertyContainerEditMode.Inline; break; case PropertyContainerEditMode.Dialog: // do nothing newMode = theThis.TargetEditMode; break; default: Debug.Fail(string.Format( System.Globalization.CultureInfo.CurrentCulture, "ModeSwitchControl does not yet support PropertyContainerEditMode '{0}'.", owningContainer.ActiveEditMode.ToString())); newMode = (PropertyContainerEditMode)value; break; } return(newMode); }
// When the SyncModeToOwningContainer changes, we may need to update the current // TargetEditMode private static void OnSyncModeToOwningContainerChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) { EditModeSwitchButton theThis = (EditModeSwitchButton)obj; theThis.CoerceValue(TargetEditModeProperty); }
private EditModeSwitchButtonKeyboardFix(EditModeSwitchButton button) { button.Click += new RoutedEventHandler(OnEditModeSwitchButtonClick); button.PreviewMouseLeftButtonUp += new MouseButtonEventHandler(OnEditModeSwitchButtonPreviewMouseLeftButtonUp); }