动态创建 Windows Phone 8.1 中的按钮

4

我创建了一个Windows Phone 8.1(通用)应用程序。我需要创建一个动态按钮区域。这是我的示例XAML:

    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>

      <Grid x:Name="_root"
          Grid.Row="1"
          Margin="10" />

这是我的代码:
            _root.Children.Clear();
            _root.ColumnDefinitions.Clear();
            Size = 5;
            for (int i = 0; i < Size; i++)
            {
                _root.ColumnDefinitions.Add(new ColumnDefinition
                {
                    Width = new GridLength(1, GridUnitType.Star)
                });
            }
                for (int column = 0; column < Size; column++)
                {
                    Button btnTemp = new Button();
                    btnTemp.Visibility = Visibility.Visible;
                    btnTemp.VerticalAlignment = VerticalAlignment.Stretch;
                    btnTemp.HorizontalAlignment = HorizontalAlignment.Stretch;
                    btnTemp.HorizontalContentAlignment = HorizontalAlignment.Center;
                    btnTemp.VerticalContentAlignment = VerticalAlignment.Center;
                    btnTemp.BorderBrush = new SolidColorBrush(Colors.Blue);
                    btnTemp.Content = column;
                    Grid.SetColumn(btnTemp, column);
                    Grid.SetRow(btnTemp, 0);
                    _root.Children.Add(btnTemp);    
                }

这是我的结果:

在此输入图片描述

如果我使用了:

  Width = new GridLength(1, GridUnitType.Auto)

我得到的结果是:

enter image description here

我需要修复这些错误:

1.将文本居中对齐到按钮。

  1. 看不到按钮“4”的右边框。按钮“4”宽度不一致。

尝试将网格的宽度设为自动...为什么不动态地在中心添加文本框...这将更容易。 - kirushan
我尝试使用网格列宽度为自动。第二张图片的结果。“动态添加文本框”-好主意。 - FetFrumos
1个回答

3

针对你的情况,修复很简单 - 只需将创建的按钮的MinWidth定义为0(默认值为一些值即可)。

btnTemp.MinWidth = 0;

我认为这应该会有所帮助。

然而,在你的情况下,我不会在网格中添加按钮,而是可能会定义ItemsPanel和适当的ItemsTemplateButton,然后绑定到一个集合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接