由於您正在學習,我將幫助您開始努力,讓您和其他人處於類似的情況,以便下一步。
從下面的代碼開始,調整它,學習它,研究它,最重要的是玩得開心。
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
![Grid UI with borders](https://i.stack.imgur.com/hhv2M.png)
摘要
這是一個開始。它不是完美,並且要獲得內邊框不會比邊緣更厚會花費一點努力,但不應太困難。提示:考慮如何使用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