using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Shapes; namespace RealTimeGraphEx.Components { public class GridLines : ComponentBase { private RealTimeGraphExBase lastGraph; #region Properties public int Rows { get { return (int)GetValue(RowsProperty); } set { SetValue(RowsProperty, value); } } public static readonly DependencyProperty RowsProperty = DependencyProperty.Register("Rows", typeof(int), typeof(GridLines), new PropertyMetadata(5)); public int Columns { get { return (int)GetValue(ColumnsProperty); } set { SetValue(ColumnsProperty, value); } } public static readonly DependencyProperty ColumnsProperty = DependencyProperty.Register("Columns", typeof(int), typeof(GridLines), new PropertyMetadata(9)); public Brush GridBrush { get { return (Brush)GetValue(GridBrushProperty); } set { SetValue(GridBrushProperty, value); } } public static readonly DependencyProperty GridBrushProperty = DependencyProperty.Register("GridBrush", typeof(Brush), typeof(GridLines), new PropertyMetadata(Brushes.Silver)); #endregion public GridLines() { Location = ComponentLocationEnum.Back; this.SizeChanged += (x, y) => { Render(Graph); }; } public void Render() { Render(lastGraph); } public override void Render(RealTimeGraphExBase graph, bool animate = false) { if (graph == null) return; lastGraph = graph; Grid grid = new Grid(); grid.Children.Clear(); grid.ColumnDefinitions.Clear(); grid.RowDefinitions.Clear(); for (int i = 0; i < Rows; i++) { RowDefinition row = new RowDefinition(); row.Height = new GridLength(1, GridUnitType.Star); grid.RowDefinitions.Add(row); RowDefinition rowLabels = new RowDefinition(); row.Height = new GridLength(1, GridUnitType.Star); } for (int i = 0; i < Columns; i++) { ColumnDefinition column = new ColumnDefinition(); column.Width = new GridLength(1, GridUnitType.Star); grid.ColumnDefinitions.Add(column); } for (int i = 0; i < grid.RowDefinitions.Count - 1; i++) { Rectangle rec = new Rectangle(); rec.Height = 1; rec.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch; rec.VerticalAlignment = System.Windows.VerticalAlignment.Bottom; rec.Fill = GridBrush; Grid.SetRow(rec, i); Grid.SetColumn(rec, 0); Grid.SetColumnSpan(rec, grid.ColumnDefinitions.Count); grid.Children.Add(rec); } for (int i = 0; i < grid.ColumnDefinitions.Count - 1; i++) { Rectangle rec = new Rectangle(); rec.Width = 1; rec.HorizontalAlignment = System.Windows.HorizontalAlignment.Right; rec.VerticalAlignment = System.Windows.VerticalAlignment.Stretch; rec.Fill = GridBrush; Grid.SetColumn(rec, i); Grid.SetRow(rec, 0); Grid.SetRowSpan(rec, grid.RowDefinitions.Count); grid.Children.Add(rec); } this.Content = grid; //if (!graph.gridBack.Children.Contains(this)) //{ // this.RemoveFromParent(); // graph.gridBack.Children.Add(this); //} } } }