Windows Phone 应用中的按钮边距
本文关键字:按钮 Phone 应用 Windows | 更新日期: 2023-09-27 18:33:44
我正在动态生成一个按钮矩阵(动态网格大小),一切都很完美,除了它们之间没有空格就无法获得它们。我尝试过,但不明白如何使用边距属性。
460 是我添加按钮的gridPanel
的宽度和高度
这是我app.cs
文件中的代码
private void generateButtons()
{
for (int i = 0; i < gridSize; i++)
{
for (int j = 0; j < gridSize; j++)
{
buttons[i, j] = new Button();
buttons[i, j].Content = "0";
buttons[i, j].FontSize = 16;
buttons[i, j].Height = 460/gridSize;
double size = buttons[i, j].Height;
buttons[i, j].Width = 460/gridSize;
buttons[i, j].Foreground = new SolidColorBrush(Colors.Transparent);
opened[i, j] = false;
buttons[i, j].Margin = new Thickness(0 + (size * j), 0 + (size * i), 464 - (0 + (size * (j + 1))), 464 - (0 + (size * (i + 1))));
buttons[i, j].Click += new RoutedEventHandler(cell_Click);
this.gridPanel.Children.Add(buttons[i, j]);
}
}
}
Windows Phone 上的大多数"输入控件"(按钮、文本框等)的默认间距等于 6.0 或 12.0。简单的解决方法是将按钮的边距调整为 -12。
与问题无关的 Sugestion - 当您想用按钮统一填充网格时,生成所需数量的行和列并将每个按钮放在不同的单元格中(按钮.margin始终等于 -12)可能会更容易。所有大小计算都将由网格完成。像这样(网格面板是网格)。
// generate rows and columns
for (int i = 0; i < gridSize; i++)
{
gridPanel.RowDefinitions.Add(new RowDefinition());
gridPanel.ColumnDefinitions.Add(new ColumnDefinition());
}
for (int i = 0; i < gridSize; i++)
{
for (int j = 0; j < gridSize; j++)
{
buttons[i, j] = new Button
{
Content = "0",
FontSize = 16,
Foreground = new SolidColorBrush(Colors.Transparent),
// all buttons have the same margin, no calculation needed
Margin = new Thickness(-12)
};
// placing in a row and column via attached properties
buttons[i, j].SetValue(Grid.RowProperty, i);
buttons[i, j].SetValue(Grid.ColumnProperty, j);
buttons[i, j].Click += new RoutedEventHandler(cell_Click);
opened[i, j] = false;
this.gridPanel.Children.Add(buttons[i, j]);
}
}