2012-02-03 16 views
4

グリッドに100 x 100セルを追加するためのコードを書きました。まず、グリッドの行/列を分割する行を強調したいと思います。グリッドコントロールの境界線をハイライト表示する方法

私はどんなプロパティを使うべきですか、それをどうすればいいですか?

ベローは、グリッドセルを作成するためのコードです:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 

     for (int i = 0; i < 100 ; i++) 

      layoutGrid.RowDefinitions.Add(new RowDefinition { }); 
     for (int i = 0; i < 100; i++) 
      layoutGrid.ColumnDefinitions.Add(new ColumnDefinition { }); 

    } 
} 
+0

私はあなたの質問を正しく理解しているかどうかはわかりませんが、グリッドコントロールのShowGridLinesプロパティは解決策ではないと思います。 – michele

+0

ShowGridLinesのMSDN: 'グリッド線を有効にすると、グリッド内のすべての要素の周りに点線が作成されます。このプロパティは、レイアウトの問題をデバッグするためのデザインツールとして使用されており、本番品質コードでの使用を目的としていないため、点線のみを使用できます。グリッド内に線が必要な場合は、グリッド内の要素に枠線を付けるようにスタイルを設定します.' [DataGrid]でもっとうまくいかないでしょうか?(http://msdn.microsoft.com/en-us/library/system .windows.controls.datagrid(v = VS.95).aspx)? – Clemens

答えて

5

あなたが試すことができますカップルの方法があります。あなたはGrid.csで見てみる場合は、Brushes.Blue & Brushes.Yellowあなたは、以下のソースでShowGridLines =「true」を有効にするときに表示ダッシュを作る固体の色を参照してください?それらを異なる色に設定することができます(Brushes.Grayのように同じ色にするか、ダッシュを省略して1行を描画することも、aのようなカスタムブラシリソースを使用することもできます)。勾配。

/// <summary> 
    /// Helper to render grid lines. 
    /// </summary> 
    internal class GridLinesRenderer : DrawingVisual 
    { 
     /// <summary> 
     /// Static initialization 
     /// </summary> 
     static GridLinesRenderer() 
     { 
      s_oddDashPen = new Pen(Brushes.Blue, c_penWidth); 
      DoubleCollection oddDashArray = new DoubleCollection(); 
      oddDashArray.Add(c_dashLength); 
      oddDashArray.Add(c_dashLength); 
      s_oddDashPen.DashStyle = new DashStyle(oddDashArray, 0); 
      s_oddDashPen.DashCap = PenLineCap.Flat; 
      s_oddDashPen.Freeze(); 

      s_evenDashPen = new Pen(Brushes.Yellow, c_penWidth); 
      DoubleCollection evenDashArray = new DoubleCollection(); 
      evenDashArray.Add(c_dashLength); 
      evenDashArray.Add(c_dashLength); 
      s_evenDashPen.DashStyle = new DashStyle(evenDashArray, c_dashLength); 
      s_evenDashPen.DashCap = PenLineCap.Flat; 
      s_evenDashPen.Freeze(); 
     } 

それともがありますあなたがセットBorderBrush & BorderThicknessやスパンで国境管理を取る(私はすでに他の場所で過去のポストのために一緒に例をたたいていたので)あなたがXAMLに示さないことができますトリックセル全体の増分ボーダー&この例のような列;

<Border Height="300" Width="300" Background="White" BorderThickness="1" BorderBrush="Gray"> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="30"/> 
       <ColumnDefinition Width="30"/> 
       <ColumnDefinition Width="30"/> 
       <ColumnDefinition Width="30"/>    
       <ColumnDefinition Width="30"/> 
       <ColumnDefinition Width="30"/>    
       <ColumnDefinition Width="30"/> 
       <ColumnDefinition Width="30"/>    
       <ColumnDefinition Width="30"/> 
       <ColumnDefinition Width="30"/> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="30"/> 
       <RowDefinition Height="30"/> 
       <RowDefinition Height="30"/> 
       <RowDefinition Height="30"/> 
       <RowDefinition Height="30"/> 
       <RowDefinition Height="30"/> 
       <RowDefinition Height="30"/> 
       <RowDefinition Height="30"/> 
       <RowDefinition Height="30"/> 
       <RowDefinition Height="30"/> 
      </Grid.RowDefinitions> 
      <!-- Horizontal Accent Lines --> 
      <Border Grid.ColumnSpan="10" BorderThickness="0,1" BorderBrush="Gray"/> 
      <Border Grid.Row="2" Grid.ColumnSpan="10" BorderThickness="0,1" BorderBrush="Gray"/> 
      <Border Grid.Row="4" Grid.ColumnSpan="10" BorderThickness="0,1" BorderBrush="Gray"/> 
      <Border Grid.Row="6" Grid.ColumnSpan="10" BorderThickness="0,1" BorderBrush="Gray"/> 
      <Border Grid.Row="8" Grid.ColumnSpan="10" BorderThickness="0,1" BorderBrush="Gray"/> 
      <!-- Vertical Accent Lines --> 
      <Border Grid.Column="1" Grid.RowSpan="10" BorderThickness="1,0" BorderBrush="Gray"/> 
      <Border Grid.Column="3" Grid.RowSpan="10" BorderThickness="1,0" BorderBrush="Gray"/> 
      <Border Grid.Column="5" Grid.RowSpan="10" BorderThickness="1,0" BorderBrush="Gray"/> 
      <Border Grid.Column="7" Grid.RowSpan="10" BorderThickness="1,0" BorderBrush="Gray"/> 
      <Border Grid.Column="9" Grid.RowSpan="10" BorderThickness="1,0" BorderBrush="Gray"/> 
      <!-- Content Elements --> 
      <TextBlock Text="1" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
      <TextBlock Text="2" Grid.Column="5" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
      <TextBlock Text="3" Grid.Row="2" Grid.Column="9" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
      <TextBlock Text="4" Grid.Row="4" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
      <TextBlock Text="5" Grid.Row="8" Grid.Column="7" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
     </Grid> 
     </Border> 

またはDataGrid用のXAML。

<Window.Resources> 
     <SolidColorBrush x:Key="RedGridLine" Color="#FFFF4444" /> 
     <SolidColorBrush x:Key="BlueGridLine" Color="#554444FF"/> 
    </Window.Resources> 

    <my:DataGrid VerticalGridLinesBrush="{StaticResource RedGridLine}" 
      HorizontalGridLinesBrush="{StaticResource BlueGridLine}" > 

これは役立ちます。

関連する問題