public void InitBoard()
        {
            this.imageSourceProvider = new ImageSourceFactory();
            this.balloonFactory = new GraphicsBalloonFactory(this.imageSourceProvider);

            Grid grid = new Grid();

            for (int i = 0; i < boardSize; i++)
            {
                grid.RowDefinitions.Add(new RowDefinition());
                grid.ColumnDefinitions.Add(new ColumnDefinition());
            }

            for (int row = 0; row < boardSize; row++)
            {
                for (int col = 0; col < boardSize; col++)
                {
                    field[row, col] = this.balloonFactory.GetBalloon(RandomGenerator.GetRandomInt());

                    field[row, col].Source = field[row, col].ImageSource;
                    field[row, col].Tag = row + "/" + col;
                    field[row, col].MouseDown += Click;

                    Grid.SetRow(field[row, col], row);
                    Grid.SetColumn(field[row, col], col);

                    grid.Children.Add(field[row, col]);
                }
            }

            this.Content = grid;
        }
 public GraphicsBalloon(int value, GraphicsTraversal traversal, BitmapImage imageSource, ImageSourceFactory imageSourceProvider)
     : base()
 {
     this.imageSourceProvider = imageSourceProvider;
     this.IsPopped = false;
     this.Value = value;
     this.TraversalEffect = traversal;
     this.ImageSource = imageSource;
 }
 public GraphicsBalloonFactory(ImageSourceFactory imageSourceFactory)
 {
     this.imageSourceFactory = imageSourceFactory;
 }