Example #1
0
 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);
 }