2016-01-27 37 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

相關問題