private void SetupGrid(ConwayGridModel model) { gameCanvas.Children.Clear(); gameWrapper.Width = model.Width * cellDimension; gameWrapper.Height = model.Height * cellDimension; gameCanvas.Width = model.Width * cellDimension; gameCanvas.Height = model.Height * cellDimension; this.DataContext = model; for (int i = 0; i < model.Width; i++) { for (int j = 0; j < model.Height; j++) { Shape shape = new Rectangle(); shape.Width = cellDimension; shape.Height = cellDimension; Canvas.SetTop(shape, j * cellDimension); Canvas.SetLeft(shape, i * cellDimension); shape.StrokeThickness = 1; //shape.SetResourceReference(Shape.StrokeProperty, "BorderColor"); shape.DataContext = model.Cells[i, j]; gameCanvas.Children.Add(shape); } } }
public static void GridDataSet(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (e.NewValue == null) { return; } ConwayGridModel data = (ConwayGridModel)e.NewValue; ConwayGrid self = ((ConwayGrid)d); self.SetupGrid(data); }
private void gameCanvas_MouseDown(object sender, MouseButtonEventArgs e) { Point p = e.GetPosition(gameCanvas); int x = (int)Math.Floor(p.X / cellDimension); int y = (int)Math.Floor(p.Y / cellDimension); Shape s = (Shape)gameCanvas.Children[CalculateIndex(x, y)]; ConwayGridModel model = (ConwayGridModel)this.GetValue(GridDataProperty); model.Cells[x, y].IsAlive = !model.Cells[x, y].IsAlive; }
private void updateButton_Click(object sender, RoutedEventArgs e) { gridModel = new ConwayGridModel((int)widthSlider.Value, (int)heightSlider.Value); gameGrid.GridData = gridModel; }