Я попытался использовать простой цикл for:
using System.Windows;
using System.Windows.Media;
using System.Windows.Shapes;
namespace WPFGamesChess
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
Dispatcher.Invoke(makeGrid);
}
public void makeGrid()
{
Size s = new Size(20, 20);
for (int y = 0; y < s.Height; y++)
{
for (int x = 0; x < s.Width; x++)
{
Rectangle r = new Rectangle();
if ((x+y) % 2 == 0)
{
r.Fill = Brushes.Black;
}
else
{
r.Fill = Brushes.White;
}
r.Stroke = Brushes.Black;
r.StrokeThickness = 0;
double h = (RootGrid.Height / s.Height);
double w = (RootGrid.Width / s.Width);
r.Height = h;
r.Width = w;
r.Margin = new Thickness(0, 0, RootGrid.Width - r.Width - (x*w*2), RootGrid.Height - r.Height - (y*h*2));
RootGrid.Children.Add(r);
}
}
}
}
}
Однако, если сделать это таким образом, то загрузка дисплея, насколько я могу судить, не загружается.Я подумал, что это должно быть многопоточным, но я также не могу понять, как это сделать.Я пытаюсь создать сетку для шахматной доски, но я хотел бы иметь возможность повторно использовать этот код для создания более крупной сетки для стратегической игры.