2013-08-26 52 views
5

如果您有:如何防止重疊處的雙重厚度邊界?

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

,並把厚度1的邊境進入每個格子,你將得到的網格行之間的邊界雙重厚度。解決這個問題的唯一方法是指定邊框每一邊的厚度,還是有一些控件可以在每個列的網格周圍創建邊框而不會產生雙重厚度?

目前這種嘗試是:

    <Border 
         BorderBrush="Black" 
         BorderThickness="1" 
         Margin="19,0,0,0" 
         Background="LightGray" 
         > 
         <Viewbox VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 
         <Grid> 
          <Grid.RowDefinitions> 
          <RowDefinition Height="*"/> 
          <RowDefinition Height="2*"/> 
          <RowDefinition Height="*"/> 
          </Grid.RowDefinitions> 
          <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*"/> 
         <ColumnDefinition Width="Auto"/> 
         <ColumnDefinition Width="Auto"/> 
         </Grid.ColumnDefinitions> 

         <TextBlock 
         Grid.Row="1" 
         Grid.Column="0" 
         x:Name="TreeViewHeaderTextBox" 
         VerticalAlignment="Center" 
         HorizontalAlignment="Center" 
         Text="Time" 
         Foreground="Black" 
         /> 


         <TextBlock 
         Grid.Row="1" 
         Grid.Column="1" 
         Text="X" 
         TextAlignment="Center" 
         HorizontalAlignment="Stretch" 
         VerticalAlignment="Center" 
         /> 

         <TextBlock 
         Grid.Row="1" 
         Grid.Column="2" 
         Text="O" 
         TextAlignment="Center" 
         HorizontalAlignment="Stretch" 
         VerticalAlignment="Center" 
         /> 

        </Grid> 
        </Viewbox> 
       </Border> 

不過,我開始做更改的舊代碼,所以這不是一個雙邊框真的很好的例子。不過,我也從這個模板中獲得了雙重邊框。

   <Border Name="Bd" 
         Grid.Column="1" 
         Background="{TemplateBinding Background}" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}" 
         Padding="{TemplateBinding Padding}" 
         SnapsToDevicePixels="true"> 
       <ContentPresenter x:Name="PART_Header" 
            ContentSource="Header" 
            HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
            SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
       </Border> 

作爲每個項目結束與它接觸下一個項目的雙重厚度邊界。

編輯2:在閱讀註釋之後,我意識到我可能不應該在控件的數據模板上定義邊框,而只需通過控件設置邊框並更改控件模板上的模板。可能會從中獲得雙重邊界。

+1

請張貼您當前如何設置邊框厚度。 – Paparazzi

+0

我在網格內有邊框,我改變邊框的厚度。也許我只需要一個最外層的網格,它會包裹每個項目。這就說得通了。也可能是網格邊框厚度屬性。我會去看看它 –

+1

你有沒有聽說過XAML的表達勝過千言萬語? – Paparazzi

回答

1

如果將網格包裹在邊框元素中並設置厚度,我認爲在每個網格物品之間放置了一個邊框並避免了加倍的邊框 - 現在嘗試測試該邊框。

+0

這很有道理。我應該想到這一點。我發現它很奇怪,繼續前進。我現在會測試它 –

+0

希望它有幫助 - 我無法找到一個可以快速測試的項目,只好繼續前進。如果你還沒有成功,我會嘗試挖掘一些東西。我知道我已經看到它完成了一個單一的邊界設置。 – Matthew

1

厚度可以設置爲=「left,top,right,bottom」,這意味着您可以將重疊部分設置爲一半。

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="2*"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Border BorderThickness="1,1,1,0.5" BorderBrush="Black"/> 
    <Border BorderThickness="1,0.5" BorderBrush="Black" Grid.Row="1" /> 
    <Border BorderThickness="1,0.5,1,1" BorderBrush="Black" Grid.Row="2" /> 
</Grid>