private void PlaceAdornerPanel() { AdornerPanel.SetHorizontalStretch(designerUI, AdornerStretch.Stretch); AdornerPanel.SetVerticalStretch(designerUI, AdornerStretch.Stretch); var placement = new AdornerPlacementCollection(); placement.PositionRelativeToContentHeight(0, -10); placement.PositionRelativeToContentWidth(1, 0); placement.SizeRelativeToAdornerDesiredHeight(1, 0); placement.SizeRelativeToAdornerDesiredWidth(1, 0); AdornerPanel.SetPlacements(designerUI, placement); }
protected override void Activate(ModelItem item, DependencyObject view) { view.SetValue(Control.BackgroundProperty, Brushes.Aqua); adornedControlModel = item; adornedControlModel.PropertyChanged += adornedControlModel_PropertyChanged; AdornerPanel draggablePointAdornerPanel = new AdornerPanel(); AdornerPlacementCollection placement = new AdornerPlacementCollection(); draggablePointAdornerPanel.CoordinateSpace = AdornerCoordinateSpaces.Layout; base.Activate(item, view); }
public override Size ArrangeChildren(FrameworkElement parent, UIElementCollection internalChildren, Size finalSize) { AdornerPanel adornerPanel = parent as AdornerPanel; if (adornerPanel == null) { return(finalSize); } ModelItem model = adornerPanel.Model; ViewItem adornedElement = model == null ? (ViewItem)null : model.View; Vector vector = (Vector)parent.GetValue(TransformAwareAdornerLayout.DesignerElementScalingFactorWithZoom); foreach (UIElement uiElement in internalChildren) { uiElement.SetValue(TransformAwareAdornerLayout.DesignerElementScalingFactorWithZoom, (object)vector); AdornerPlacementCollection currentPlacements = AdornerPanel.GetCurrentPlacements(uiElement); currentPlacements.ComputePlacement(AdornerCoordinateSpaces.Default, uiElement, adornedElement, new Vector(1.0, 1.0), finalSize); Rect finalRect = new Rect((Point)currentPlacements.TopLeft, (Size)currentPlacements.Size); finalRect.Width = BaseAdornerLayout.ValidateDouble(finalRect.Width, uiElement.RenderSize.Width); finalRect.Height = BaseAdornerLayout.ValidateDouble(finalRect.Height, uiElement.RenderSize.Height); uiElement.Arrange(finalRect); if (uiElement is FrameworkElement) { if (adornerPanel.IsMirroredTransform) { uiElement.SetValue(FrameworkElement.FlowDirectionProperty, (object)FlowDirection.RightToLeft); uiElement.RenderTransform = TransformAwareAdornerLayout.RTLAdornerTransformGroup.Create(uiElement, finalRect.Width); } else { uiElement.RenderTransform = TransformAwareAdornerLayout.RTLAdornerTransformGroup.Unwrap(uiElement); uiElement.SetValue(FrameworkElement.FlowDirectionProperty, (object)FlowDirection.LeftToRight); } } } return(finalSize); }
protected override void Activate(ModelItem item) { // Save the ModelItem and hook into when it changes. // This enables updating the slider position when // a new Background value is set. adornedControlModel = item; adornedControlModel.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler( AdornedControlModel_PropertyChanged); // Setup the slider's min and max values. spaceSlider.Minimum = -20; spaceSlider.Maximum = 20; spaceSlider.TickFrequency = 1; spaceSlider.IsSnapToTickEnabled = true; spaceSlider.Background = new SolidColorBrush(Colors.Green); spaceSlider.Foreground = new SolidColorBrush(Colors.Red); // Setup the adorner panel. // All adorners are placed in an AdornerPanel // for sizing and layout support. AdornerPanel myPanel = this.Panel; AdornerPanel.SetHorizontalStretch(spaceSlider, AdornerStretch.Stretch); AdornerPanel.SetVerticalStretch(spaceSlider, AdornerStretch.None); AdornerPlacementCollection placement = new AdornerPlacementCollection(); // The adorner's width is relative to the content. // The slider extends the full width of the control it adorns. placement.SizeRelativeToContentWidth(1.0, 0); // The adorner's height is the same as the slider's. placement.SizeRelativeToAdornerDesiredHeight(1.0, 0); // Position the adorner above the control it adorns. placement.PositionRelativeToAdornerHeight(-2.0, 0); // Position the adorner up 5 pixels. This demonstrates // that these placement calls are additive. These two calls // are equivalent to the following single call: // PositionRelativeToAdornerHeight(-1.0, -5). placement.PositionRelativeToAdornerHeight(0, -5); AdornerPanel.SetPlacements(spaceSlider, placement); // Initialize the slider when it is loaded. spaceSlider.Loaded += new RoutedEventHandler(slider_Loaded); // Handle the value changes of the slider control. spaceSlider.ValueChanged += new RoutedPropertyChangedEventHandler <double>( slider_ValueChanged); spaceSlider.PreviewMouseLeftButtonUp += new System.Windows.Input.MouseButtonEventHandler( slider_MouseLeftButtonUp); spaceSlider.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler( slider_MouseLeftButtonDown); base.Activate(item); }
// The following method is called when the adorner is activated. // It creates the adorner control, sets up the adorner panel, // and attaches a ModelItem to the adorned control. protected override void Activate(ModelItem item, DependencyObject view) { //MessageBox.Show("OpacitySliderAdornerProvider Activate"); // Save the ModelItem and hook into when it changes. // This enables updating the slider position when // a new Background value is set. adornedControlModel = item; adornedControlModel.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler( AdornedControlModel_PropertyChanged); // Setup the slider's min and max values. opacitySlider.Minimum = 0; opacitySlider.Maximum = 1; // Setup the adorner panel. // All adorners are placed in an AdornerPanel // for sizing and layout support. AdornerPanel myPanel = this.Panel; AdornerPanel.SetHorizontalStretch(opacitySlider, AdornerStretch.Stretch); AdornerPanel.SetVerticalStretch(opacitySlider, AdornerStretch.None); AdornerPlacementCollection placement = new AdornerPlacementCollection(); // The adorner's width is relative to the content. // The slider extends the full width of the control it adorns. placement.SizeRelativeToContentWidth(1.0, 0); // The adorner's height is the same as the slider's. placement.SizeRelativeToAdornerDesiredHeight(1.0, 0); // Position the adorner above the control it adorns. placement.PositionRelativeToAdornerHeight(-1.0, 0); // Position the adorner up 5 pixels. This demonstrates // that these placement calls are additive. These two calls // are equivalent to the following single call: // PositionRelativeToAdornerHeight(-1.0, -5). placement.PositionRelativeToAdornerHeight(0, -5); AdornerPanel.SetPlacements(opacitySlider, placement); // Initialize the slider when it is loaded. opacitySlider.Loaded += new RoutedEventHandler(slider_Loaded); // Handle the value changes of the slider control. opacitySlider.ValueChanged += new RoutedPropertyChangedEventHandler<double>( slider_ValueChanged); opacitySlider.PreviewMouseLeftButtonUp += new System.Windows.Input.MouseButtonEventHandler( slider_MouseLeftButtonUp); opacitySlider.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler( slider_MouseLeftButtonDown); base.Activate(item, view); }