2016-01-27 34 views
1

这里是我的代码:如何显示网格线的代码背后

Grid gameboard = new Grid(); 
gameboard.HorizontalAlignment = HorizontalAlignment.Left; 
gameboard.VerticalAlignment = VerticalAlignment.Top; 
gameboard.Width = Window.Current.Bounds.Width; 
gameboard.Height = Window.Current.Bounds.Width; 
Border border = new Border(); 
border.BorderThickness = new Thickness(1); 
border.BorderBrush = new SolidColorBrush(Colors.Blue); 
for (int j=0;j<7;j++) 
{ 
    gameboard.ColumnDefinitions.Add(new ColumnDefinition());   
} 
for (int i = 0; i < 7; i++) 
{ 
    gameboard.RowDefinitions.Add(new RowDefinition());     
} 

我是一个学生,现在我想表明我的网格线,可有人能帮助我吗? 非常感谢!

+0

您在代码中创建整个Grid,或者您只是想通过代码显示网格线(在xaml中定义它们并通过代码显示)? – Romasz

+0

有没有办法可以创建一个具有网格高度=网格宽度和网格宽度=屏幕宽度的网格?我不知道如何在xaml中创建这个(我如何获取屏幕宽度?)。所以我在代码中完成了整个网格,但无论我使用什么,问题都是如何显示网格线:( –

+1

是的,有办法绑定网格的高度/宽度和窗口边界,一切都取决于你的需求。你应该按照[Kory Gill's](http://stackoverflow.com/a/35044268/2681948)的帖子。 – Romasz

回答

4

由于您正在学习,我将帮助您开始努力,让您和其他人处于类似的情况,以便下一步。

从下面的代码开始,调整它,学习它,研究它,最重要的是玩得开心。

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

摘要

这是一个开始。它不是完美,并且要获得内边框不会比边缘更厚会花费一点努力,但不应太困难。提示:考虑如何使用border.BorderThickness = new Thickness(l, t, r, b);,其中l/t/r/b取决于i/j是1还是0。我甚至可能把这个问题作为面试问题;可能是一个有趣的讨论。

+0

非常感谢,它的工作原理:) –

+1

@yuntianliu,如果您满意,请标记为答案,以便其他人可以看到,这个问题已得到充分回答。另外,根据帮助中的某些准则,您无需在网站上写下“感谢”等评论,只需标记为答案,上传或下载等。 –

0

您可以使用Grid.ShowGridLines属性并添加网格线。

gameboard.ShowGridLines = true; 
+0

我试过这个。它显示“Grid不包含ShowGridLines ...” –

+1

['Grid']( https://msdn.microsoft.com/zh-cn/library/windows/apps/windows.ui.xaml.controls.grid.aspx#properties)UWP的类不包含“ShowGridLines”属性! – Herdo

+0

正确Herdo。Yuntian现在你需要为所有49个单元格分配定义的边框。可能这篇文章可以帮助你。https://social.msdn.microsoft.com/Forums/office/en-US/5412ab93-b611-4a64-b351 -5d71e7648996/uwpxamlgrid-show-grid-lines-border?forum = wpdevelop – Saad

相关问题