C# 如何在代码隐藏中显示网格线

C# 如何在代码隐藏中显示网格线,c#,grid,win-universal-app,uwp,C#,Grid,Win Universal App,Uwp,这是我的密码: 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.

这是我的密码:

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.BorderThickness=新厚度(1);
border.BorderBrush=新的SolidColorBrush(Colors.Blue);

对于(int j=0;j,可以使用Grid.ShowGridLines属性并添加网格线

gameboard.ShowGridLines = true;

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

gameboard.ShowGridLines = true;

既然你在学习,我将帮助你开始努力,让你和其他人进入下一步类似的情况

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

XAML

<Grid Name="LayoutRoot" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Margin="30" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
</Grid>

代码

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);
}
public主页()
{
this.InitializeComponent();
DataContext=this;
已加载+=主页面_已加载;
}
已加载私有void主页(对象发送方、路由目标)
{
Grid gameboard=新网格();
gameboard.HorizontalAlignment=HorizontalAlignment.Stretch;
gameboard.VerticalAlignment=VerticalAlignment.Stretch;
对于(int j=0;j<7;j++)
{
var cd=新的ColumnDefinition();
cd.Width=新的GridLength(1,GridUnitType.Star);
var rd=新的行定义();
rd.高度=新网格长度(1,GridUnitType.Star);
gameboard.ColumnDefinitions.Add(cd);
gameboard.RowDefinitions.Add(rd);
}
对于(int j=0;j<7;j++)
{
对于(int i=0;i<7;i++)
{
边框=新边框();
border.BorderThickness=新厚度(1);
border.BorderBrush=新的SolidColorBrush(Colors.Blue);
border.HorizontalAlignment=HorizontalAlignment.Stretch;
border.VerticalAlignment=VerticalAlignment.Stretch;
var tb=新的TextBlock();
tb.Text=string.Format($“i={i};j={j}”);
tb.余量=新厚度(4);
Grid.SetColumn(边框,j);
Grid.SetRow(边界,i);
边界:儿童=结核病;
gameboard.Children.Add(边框);
}
}
LayoutRoot.Children.Add(gameboard);
}
结果

摘要


这是一个开始。它不是完美的,要使内部边界不超过边缘需要花费少量的努力,但应该不会太难。提示:考虑如何使用
border.BorderThickness=新的厚度(l、t、r、b)
根据i/j的不同,l/t/r/b是1或0。我甚至可能会把这当作一个面试问题;这可能是一个有趣的讨论。

既然你在学习,我将帮助你开始努力,让你和其他人进入下一步

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

XAML

<Grid Name="LayoutRoot" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Margin="30" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
</Grid>

代码

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);
}
public主页()
{
this.InitializeComponent();
DataContext=this;
已加载+=主页面_已加载;
}
已加载私有void主页(对象发送方、路由目标)
{
Grid gameboard=新网格();
gameboard.HorizontalAlignment=HorizontalAlignment.Stretch;
gameboard.VerticalAlignment=VerticalAlignment.Stretch;
对于(int j=0;j<7;j++)
{
var cd=新的ColumnDefinition();
cd.Width=新的GridLength(1,GridUnitType.Star);
var rd=新的行定义();
rd.高度=新网格长度(1,GridUnitType.Star);
gameboard.ColumnDefinitions.Add(cd);
gameboard.RowDefinitions.Add(rd);
}
对于(int j=0;j<7;j++)
{
对于(int i=0;i<7;i++)
{
边框=新边框();
border.BorderThickness=新厚度(1);
border.BorderBrush=新的SolidColorBrush(Colors.Blue);
border.HorizontalAlignment=HorizontalAlignment.Stretch;
border.VerticalAlignment=VerticalAlignment.Stretch;
var tb=新的TextBlock();
tb.Text=string.Format($“i={i};j={j}”);
tb.余量=新厚度(4);
Grid.SetColumn(边框,j);
Grid.SetRow(边界,i);
边界:儿童=结核病;
gameboard.Children.Add(边框);
}
}
LayoutRoot.Children.Add(gameboard);
}
结果

摘要


这是一个开始。它不是完美的,要使内部边界不超过边缘需要花费少量的努力,但应该不会太难。提示:考虑如何使用
border.BorderThickness=新的厚度(l、t、r、b)
其中,根据i/j,l/t/r/b是1或0。我甚至可以将此作为一个面试问题;这可能是一个有趣的讨论。

我尝试过这个。它显示“网格不包含显示网格线…”UWP的类不包含
ShowGridLines
属性!请更正Herdo。云田现在您需要在所有49个单元格上指定定义的边框。可能这篇文章可以帮助您。我已经尝试过了。它显示“网格不包含ShowGridLines…”UWP的类不包含
ShowGridLines
属性!请更正Herdo。Yuntian现在您需要在所有49个单元格上指定定义的边框。这篇文章可能会对您有所帮助。您可以在代码中创建整个网格,或者您只想通过代码显示网格线(在xaml和通过代码显示网格线中定义它们)?有没有一种方法可以创建网格高度=网格宽度,网格宽度=屏幕宽度的网格?我不知道如何在xaml中创建它(如何获得屏幕宽度?)。因此我在代码中创建了整个网格,但无论我使用什么,问题是如何显示网格线:(是的,有很多方法可以绑定网格的高度/宽度和窗口边界。一切都取决于您的需要。至于开始,我认为您应该遵循post。您可以用代码创建整个网格,或者