2013-08-26 9 views
5

は、あなたが持っている場合:オーバーラップ時に二重の厚さの境界を防ぐ方法は?

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

をし、各グリッドに厚さ1の境界線を入れて、あなたは、グリッド行の境界上の二重の厚さを取得します。これを処理して境界の各辺の太さを指定する唯一の方法か、または2倍の厚さを持たずに各列のグリッドの周りに罫線を作成するコントロールがありますか?

    <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> 

は、しかし、私は古いコードに変更を作り始めたので、これは二重の国境の本当に良い例をisn'ta:

は現在、このでそれを試みます。しかし、私はまた、このテンプレートから二重の罫線を取得しています。

   <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重の太さの境界で終わるので、

edit 2:コメントを読んだ後で、コントロール用のデータテンプレートに境界線を定義して、コントロールを介して枠線を設定し、テンプレートをcontroltemplateに変更する必要はないはずです。それから二重のボーダーを得ているかもしれません。

+1

現在、ボーダーの太さの設定方法を投稿してください。 – Paparazzi

+0

私はグリッドの内側にボーダーの太さを変更していました。多分私は最も外側のグリッドのために1つだけ必要とし、それはそれぞれのアイテムをラップします。それは理にかなっている。グリッドの境界線の太さのプロパティがあります。私はそれに目を通します –

+1

XAMLの表現が1000語の価値があると聞いたことがありますか? – Paparazzi

答えて

1

境界要素にグリッドをラップして厚さを設定すると、各グリッドアイテム間に境界線が置かれ、倍増した境界線が回避され、今これをテストしようとしていると思います。

+0

これは意味があります。私はこれを考えていたはずです。私はちょうどそれが奇妙であり、移動したことがわかった私は今それをテストします –

+0

希望する - 私はすぐにテストできるプロジェクトを見つけることができませんでしたし、少し移動する必要がありました。あなたはまだ成功していない場合、私は何かを掘り下げようと試みます。私はそれが単一の国境設定で完了したのを見てきたことを知っています。 – Matthew

1

太さは、「左、上、右、下」に設定することができます。つまり、重なり部分を半分に設定できます。

<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> 
関連する問題