1

我正在尝试在 Silverlight 中构建一个简单的 3x3 网格,每个网格单元中都有一个按钮。网格定义如下。当我将按钮添加到网格时,它们永远不会填充 130x130 网格单元。我将按钮的边距和填充设置为 0,并将它们的水平和垂直对齐设置为 Stretch。

    <Grid x:Name="Test" ShowGridLines="True" HorizontalAlignment="Center">
        <Grid.RowDefinitions>
            <RowDefinition Height="130"></RowDefinition>
            <RowDefinition Height="130"></RowDefinition>
            <RowDefinition Height="130"></RowDefinition>
            <RowDefinition Height="130"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="130"></ColumnDefinition>
            <ColumnDefinition Width="130"></ColumnDefinition>
            <ColumnDefinition Width="130"></ColumnDefinition>
        </Grid.ColumnDefinitions>

    <Style x:Key="OperandButton" TargetType="Button">
        <Setter Property="BorderThickness" Value="1" />
        <Setter Property="Background" Value="{StaticResource PhoneAccentColor}" />
        <Setter Property="FontSize" Value="50" />
        <Setter Property="HorizontalAlignment" Value="Stretch" />
        <Setter Property="VerticalAlignment" Value="Stretch" />
    </Style>

 <Button Content="10" Style="{StaticResource OperandButton}" Grid.Row="0" Grid.Column="0" />
 <Button Content="3" Style="{StaticResource OperandButton}" Grid.Row="0" Grid.Column="1" />
 <Button Content="7" Style="{StaticResource OperandButton}" Grid.Row="0" Grid.Column="2" />
4

4 回答 4

1

您的代码应该可以正常工作。只需按原样尝试此代码。

 <Grid x:Name="Test" ShowGridLines="True" HorizontalAlignment="Center" >
            <Grid.Resources>
                <Style x:Key="OperandButton" TargetType="Button">
                    <Setter Property="BorderThickness" Value="1" />
                    <Setter Property="Background" Value="Blue" />
                    <Setter Property="FontSize" Value="50" />
                    <Setter Property="HorizontalAlignment" Value="Stretch" />
                    <Setter Property="VerticalAlignment" Value="Stretch" />
                </Style>
            </Grid.Resources>
                <Grid.RowDefinitions>
            <RowDefinition Height="130"></RowDefinition>
            <RowDefinition Height="130"></RowDefinition>
            <RowDefinition Height="130"></RowDefinition>
            <RowDefinition Height="130"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200"></ColumnDefinition>
            <ColumnDefinition Width="130"></ColumnDefinition>
            <ColumnDefinition Width="130"></ColumnDefinition>
        </Grid.ColumnDefinitions>   
        <Button Content="10" Style="{StaticResource OperandButton}" Grid.Row="0" Grid.Column="0" />
        <Button Content="3" Style="{StaticResource OperandButton}" Grid.Row="0" Grid.Column="1" />
        <Button Content="7" Style="{StaticResource OperandButton}" Grid.Row="0" Grid.Column="2" />    
        </Grid>

如果您仍然没有得到它,请告诉我。

于 2012-07-18T22:53:58.953 回答
0

试试下面的,

当您在 Blend 中打开您的项目时。右键单击按钮,进入编辑模板,编辑当前。您会发现每个按钮都有一个网格和一个容器。然后使两者的大小相等,您会看到默认边框的大小与按钮的大小相同。

相同的模板也可以用于其他按钮。

现在尝试将按钮包围在网格中。

于 2012-07-19T05:27:39.393 回答
0

试试这个,它不能指定VerticalAlignmentOr HorizontalAlignment

Margin="-10"
于 2013-01-08T08:17:34.907 回答
0

查看 blend 中的模板解决了这个问题。在 Border 上设置了以下属性:

Margin="{StaticResource PhoneTouchTargetOverhang}"

一旦将其设置为 0,网格就完美了。感谢您的指导。

于 2012-08-08T22:29:03.320 回答