2011-10-31 9 views
6

私は、カスタムニーズのためにWPFでアプリケーションを構築しています。まず、私はカスタムコントロールを選択しましたが、後で、私が必要としていたものの多くが既にDatagrid Controlに実装されていることが分かりました。しかし、一つの小さなグリッチがある:WPF DataGridの連続するセル間にピクセルのギャップをゼロにする方法

データグリッドの問題は二つの連続するセル(グリッド線の各側に1)との間2ピクセルギャップの最小値を強制することです。わかりやすくするために、次の図をご覧ください。

(スタックオーバーフローは、私は新しいユーザーのスパム保護ポリシーを理由に私の質問に画像を追加することはできないだろう)

http://img265.imageshack.us/img265/3545/figurem.png

: は、2つの連続したセルの間のデータグリッドによって強制さ2つのピクセルのギャップに注意してください。私は内容が「連続」表示するよう

これは私の要件に合わない(2つのピクセルのこのギャップがあってはなりません。私は、接続線は、「接続」を見てみたいです)。私はGridLinesVisibilityでうんざりを試みましたが、それは助けになりませんでした。 DataGridが、このようなカスタムコントロールをホストしている:

<DataGrid.Columns> 
      <DataGridTemplateColumn Width="25" Header=""> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <ContentControl Content="{Binding Path=MyCustomControl}" Margin="0"></ContentControl> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 

.... 
</DataGrid.Columns> 

私がこれまで試してみました:

  1. をグリッド線を切る(ここで結果を参照してください。http://img263.imageshack.us/img263/8602/figure2j.png
  2. contentプロパティのマージンを設定します0
  3. ためにGoogleを検索し、
  4. をStackOverflowのいくつかの本を相談しました。

何も出てくるようです。

これに対する解決策はあります/いくつかのハックや回避策または私は最初からすべてを作成する必要がありますか?私はC#でまともな経験を持っていますが、私はWPFを初めて使っています。

お願いします。あなたがする必要がどのような

答えて

4

があなたのDataGridのDataGridCellスタイルで取得し、0にそのBorderThicknessを設定していることは、デフォルトのスタイルで1としてハードコーディングされたのですが、幸いそれは、この上書きするのは簡単です:

<Style TargetType="DataGridCell"> 
    <Setter Property="BorderThickness" Value="0" /> 
</Style> 

私はあなたのDataGridのリソースに入れることをお勧めします。それは、そのグリッドより広い範囲を必要としない限り、そのグリッドにのみ影響します。

<DataGrid> 
    <DataGrid.Resources> 
     <Style TargetType="DataGridCell">...</Style> 
    </DataGrid.Resources> 
    ... 
</DataGrid> 

正確なニーズに応じて、他にも配置できる場所があります。

+0

うわー!それはうまくいった!それは私に多くの時間を節約しました!私はこれを考えることができませんでした。どうもありがとう! –

関連する問題