由于您正在学习,我将帮助您开始努力,让您和其他人处于类似的情况,以便下一步。
从下面的代码开始,调整它,学习它,研究它,最重要的是玩得开心。
XAML
<Grid Name="LayoutRoot" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Margin="30" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
</Grid>
CODE
public MainPage()
{
this.InitializeComponent();
DataContext = this;
Loaded += MainPage_Loaded;
}
private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
Grid gameboard = new Grid();
gameboard.HorizontalAlignment = HorizontalAlignment.Stretch;
gameboard.VerticalAlignment = VerticalAlignment.Stretch;
for (int j = 0; j < 7; j++)
{
var cd = new ColumnDefinition();
cd.Width = new GridLength(1, GridUnitType.Star);
var rd = new RowDefinition();
rd.Height = new GridLength(1, GridUnitType.Star);
gameboard.ColumnDefinitions.Add(cd);
gameboard.RowDefinitions.Add(rd);
}
for (int j = 0; j < 7; j++)
{
for (int i = 0; i < 7; i++)
{
Border border = new Border();
border.BorderThickness = new Thickness(1);
border.BorderBrush = new SolidColorBrush(Colors.Blue);
border.HorizontalAlignment = HorizontalAlignment.Stretch;
border.VerticalAlignment = VerticalAlignment.Stretch;
var tb = new TextBlock();
tb.Text = string.Format($"i={i}; j={j}");
tb.Margin = new Thickness(4);
Grid.SetColumn(border, j);
Grid.SetRow(border, i);
border.Child = tb;
gameboard.Children.Add(border);
}
}
LayoutRoot.Children.Add(gameboard);
}
RESULT
摘要
这是一个开始。它不是完美,并且要获得内边框不会比边缘更厚会花费一点努力,但不应太困难。提示:考虑如何使用border.BorderThickness = new Thickness(l, t, r, b);
,其中l/t/r/b取决于i/j是1还是0。我甚至可能把这个问题作为面试问题;可能是一个有趣的讨论。
您在代码中创建整个Grid,或者您只是想通过代码显示网格线(在xaml中定义它们并通过代码显示)? – Romasz
有没有办法可以创建一个具有网格高度=网格宽度和网格宽度=屏幕宽度的网格?我不知道如何在xaml中创建这个(我如何获取屏幕宽度?)。所以我在代码中完成了整个网格,但无论我使用什么,问题都是如何显示网格线:( –
是的,有办法绑定网格的高度/宽度和窗口边界,一切都取决于你的需求。你应该按照[Kory Gill's](http://stackoverflow.com/a/35044268/2681948)的帖子。 – Romasz