【问题标题】:margin of buttons in windows phone appsWindows Phone 应用程序中的按钮边距
【发布时间】:2013-10-03 18:33:15
【问题描述】:

我正在动态生成一个按钮矩阵(动态 gridSize),一切都很完美,除了它们之间没有空格我无法获得它们。我试过但不明白如何使用边距属性。

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]);
        }
    }
}

【问题讨论】:

  • 不要在过程代码中创建或操作 UI 元素。这就是 XAML 的用途。
  • @HighCore 提醒我告诉你,我通常多么喜欢阅读你的 cmets,同时思考同样的事情......哦等等,我猜我刚刚做到了。 ;)
  • @ChrisW。不过,它确实会在一段时间后变得有点重复。
  • @Yandros hah,你也有道理。
  • 我不明白是什么问题,你能说得清楚一点吗?

标签: c# xaml windows-phone-7 windows-phone


【解决方案1】:

Windows Phone 上的大多数“输入控件”(按钮、文本框等)的默认间距等于 6.0 或 12.0。简单的解决方法是将按钮的边距调整 -12。

与问题无关的建议 - 当您想用按钮统一填充 Grid 时,生成所需数量的行和列并将每个按钮放在不同的单元格中(button.margin 始终相等)可能会更容易到-12)。所有尺寸计算都将由网格完成。像这样(gridPanel 是 Grid)。

// 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]);
    }
}

【讨论】:

  • 怎么做...我的意思是我应该将哪个厚度参数改变-12。另外如何制作动态网格并使其自动在其单元格中放置按钮?
  • @SaurabhGoyal 我认为@lisp 的意思是使用统一的厚度,如new Thickness(-12)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多