2012-07-18 92 views
1

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

<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" /> 
+0

你需要给XAML,更完整的视图,如按钮声明... – 2012-07-18 22:13:45

+0

一些按钮和风格的建筑加入 – iridium 2012-07-18 22:36:46

回答

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> 

让我知道如果你还没有得到它。

+0

下面是截图我这个代码得到。你可以看到130px的网格线,但是按钮并不能满足整个事情。 [截图](https://skydrive.live.com/#cid=C3DEC8CBC1375998&id=C3DEC8CBC1375998%2122513) – iridium 2012-07-19 03:34:07

+0

欢呼我一直在寻找答案这一段时间,现在从WPF网格移动到它填充行/列默认情况下这是烦人的,但你已经用Horizo​​ntalAlignment&Horizo​​ntalAlignment保存了一天 – Grenter 2012-12-19 13:38:41

0

请尝试以下操作:

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

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

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

0

看着混合模板解决了这个问题。在边框上设置以下属性:

Margin="{StaticResource PhoneTouchTargetOverhang}" 

将此设置为0后,网格就完美了。感谢您的指导。

0

试试这个,不能指定VerticalAlignmentHorizontalAlignment

Margin="-10"