2012-07-18 91 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"