using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Media; using System.ComponentModel; namespace Microsoft.Research.DynamicDataDisplay.Charts { public partial class ViewportPanel { #region Properties #region ViewportBounds [AttachedPropertyBrowsableForChildren] public static DataRect GetViewportBounds(DependencyObject obj) { return (DataRect)obj.GetValue(ViewportBoundsProperty); } public static void SetViewportBounds(DependencyObject obj, DataRect value) { obj.SetValue(ViewportBoundsProperty, value); } public static readonly DependencyProperty ViewportBoundsProperty = DependencyProperty.RegisterAttached( "ViewportBounds", typeof(DataRect), typeof(ViewportPanel), new FrameworkPropertyMetadata(DataRect.Empty, OnLayoutPropertyChanged)); #endregion #region X [AttachedPropertyBrowsableForChildren] public static double GetX(DependencyObject obj) { return (double)obj.GetValue(XProperty); } public static void SetX(DependencyObject obj, double value) { obj.SetValue(XProperty, value); } public static readonly DependencyProperty XProperty = DependencyProperty.RegisterAttached( "X", typeof(double), typeof(ViewportPanel), new FrameworkPropertyMetadata(Double.NaN, OnLayoutPropertyChanged)); #endregion #region Y [AttachedPropertyBrowsableForChildren] public static double GetY(DependencyObject obj) { return (double)obj.GetValue(YProperty); } public static void SetY(DependencyObject obj, double value) { obj.SetValue(YProperty, value); } public static readonly DependencyProperty YProperty = DependencyProperty.RegisterAttached( "Y", typeof(double), typeof(ViewportPanel), new FrameworkPropertyMetadata(Double.NaN, OnLayoutPropertyChanged)); #endregion #region ViewportWidth [AttachedPropertyBrowsableForChildren] public static double GetViewportWidth(DependencyObject obj) { return (double)obj.GetValue(ViewportWidthProperty); } public static void SetViewportWidth(DependencyObject obj, double value) { obj.SetValue(ViewportWidthProperty, value); } public static readonly DependencyProperty ViewportWidthProperty = DependencyProperty.RegisterAttached( "ViewportWidth", typeof(double), typeof(ViewportPanel), new FrameworkPropertyMetadata(Double.NaN, OnLayoutPropertyChanged)); #endregion #region ViewportHeight [AttachedPropertyBrowsableForChildren] public static double GetViewportHeight(DependencyObject obj) { return (double)obj.GetValue(ViewportHeightProperty); } public static void SetViewportHeight(DependencyObject obj, double value) { obj.SetValue(ViewportHeightProperty, value); } public static readonly DependencyProperty ViewportHeightProperty = DependencyProperty.RegisterAttached( "ViewportHeight", typeof(double), typeof(ViewportPanel), new FrameworkPropertyMetadata(Double.NaN, OnLayoutPropertyChanged)); #endregion #region ScreenOffsetX [AttachedPropertyBrowsableForChildren] public static double GetScreenOffsetX(DependencyObject obj) { return (double)obj.GetValue(ScreenOffsetXProperty); } public static void SetScreenOffsetX(DependencyObject obj, double value) { obj.SetValue(ScreenOffsetXProperty, value); } public static readonly DependencyProperty ScreenOffsetXProperty = DependencyProperty.RegisterAttached( "ScreenOffsetX", typeof(double), typeof(ViewportPanel), new FrameworkPropertyMetadata(Double.NaN, OnLayoutPropertyChanged)); #endregion #region ScreenOffsetY [AttachedPropertyBrowsableForChildren] public static double GetScreenOffsetY(DependencyObject obj) { return (double)obj.GetValue(ScreenOffsetYProperty); } public static void SetScreenOffsetY(DependencyObject obj, double value) { obj.SetValue(ScreenOffsetYProperty, value); } public static readonly DependencyProperty ScreenOffsetYProperty = DependencyProperty.RegisterAttached( "ScreenOffsetY", typeof(double), typeof(ViewportPanel), new FrameworkPropertyMetadata(Double.NaN, OnLayoutPropertyChanged)); #endregion #region HorizontalAlignment [AttachedPropertyBrowsableForChildren] public static HorizontalAlignment GetViewportHorizontalAlignment(DependencyObject obj) { return (HorizontalAlignment)obj.GetValue(ViewportHorizontalAlignmentProperty); } public static void SetViewportHorizontalAlignment(DependencyObject obj, HorizontalAlignment value) { obj.SetValue(ViewportHorizontalAlignmentProperty, value); } public static readonly DependencyProperty ViewportHorizontalAlignmentProperty = DependencyProperty.RegisterAttached( "ViewportHorizontalAlignment", typeof(HorizontalAlignment), typeof(ViewportPanel), new FrameworkPropertyMetadata(HorizontalAlignment.Center, OnLayoutPropertyChanged)); #endregion #region VerticalAlignment [AttachedPropertyBrowsableForChildren] public static VerticalAlignment GetViewportVerticalAlignment(DependencyObject obj) { return (VerticalAlignment)obj.GetValue(ViewportVerticalAlignmentProperty); } public static void SetViewportVerticalAlignment(DependencyObject obj, VerticalAlignment value) { obj.SetValue(ViewportVerticalAlignmentProperty, value); } public static readonly DependencyProperty ViewportVerticalAlignmentProperty = DependencyProperty.RegisterAttached( "ViewportVerticalAlignment", typeof(VerticalAlignment), typeof(ViewportPanel), new FrameworkPropertyMetadata(VerticalAlignment.Center, OnLayoutPropertyChanged)); #endregion #region ActualViewportBounds public static DataRect GetActualViewportBounds(DependencyObject obj) { return (DataRect)obj.GetValue(ActualViewportBoundsProperty); } public static void SetActualViewportBounds(DependencyObject obj, DataRect value) { obj.SetValue(ActualViewportBoundsProperty, value); } public static readonly DependencyProperty ActualViewportBoundsProperty = DependencyProperty.RegisterAttached( "ActualViewportBounds", typeof(DataRect), typeof(ViewportPanel), new FrameworkPropertyMetadata(DataRect.Empty)); #endregion #region PrevActualViewportBounds [EditorBrowsable(EditorBrowsableState.Never)] public static DataRect GetPrevActualViewportBounds(DependencyObject obj) { return (DataRect)obj.GetValue(PrevActualViewportBoundsProperty); } public static void SetPrevActualViewportBounds(DependencyObject obj, DataRect value) { obj.SetValue(PrevActualViewportBoundsProperty, value); } public static readonly DependencyProperty PrevActualViewportBoundsProperty = DependencyProperty.RegisterAttached( "PrevActualViewportBounds", typeof(DataRect), typeof(ViewportPanel), new FrameworkPropertyMetadata(DataRect.Empty)); #endregion #region MinScreenWidth public static double GetMinScreenWidth(DependencyObject obj) { return (double)obj.GetValue(MinScreenWidthProperty); } public static void SetMinScreenWidth(DependencyObject obj, double value) { obj.SetValue(MinScreenWidthProperty, value); } public static readonly DependencyProperty MinScreenWidthProperty = DependencyProperty.RegisterAttached( "MinScreenWidth", typeof(double), typeof(ViewportPanel), new FrameworkPropertyMetadata(Double.NaN, OnLayoutPropertyChanged)); #endregion // end of MinScreenWidth protected static void OnLayoutPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { FrameworkElement uiElement = d as FrameworkElement; if (uiElement != null) { ViewportPanel panel = VisualTreeHelper.GetParent(uiElement) as ViewportPanel; if (panel != null) { // invalidating not self arrange, but calling Arrange method of only that uiElement which has changed position panel.InvalidatePosition(uiElement); } } } #region IsMarkersHost public bool IsMarkersHost { get { return (bool)GetValue(IsMarkersHostProperty); } set { SetValue(IsMarkersHostProperty, value); } } public static readonly DependencyProperty IsMarkersHostProperty = DependencyProperty.Register( "IsMarkersHost", typeof(bool), typeof(ViewportPanel), new FrameworkPropertyMetadata(false)); #endregion // end of IsMarkersHost #endregion } }