7

カスタムのニーズに合わせて WPF でアプリケーションを構築しています。最初はカスタム コントロールを選択しましたが、後で必要なものの多くが Datagrid Control に既に実装されていることがわかりました。ただし、小さな不具合が 1 つあります。

Datagrid の問題は、2 つの連続するセル (グリッド ラインの各側に 1 つ) の間に最小2 ピクセルのギャップを強制することです。わかりやすくするために、次の図を見てください。

. 2 つの連続するセル間の Datagrid によって適用される 2 ピクセルのギャップに注意してください: http://img265.imageshack.us/img265/3545/figurem.png

(スタックオーバーフローにより、新しいユーザー向けのスパム保護ポリシーを引用して、質問に画像を追加できませんでした)

.

コンテンツを「連続」して表示したいので、これは私の要件には合いません (この 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. GridLine をオフにする (結果はこちら: http://img263.imageshack.us/img263/8602/figure2j.png )
  2. content プロパティのマージンを 0 に設定します。
  3. Googleとstackoverflowを検索しました
  4. いくつかの本を参照しました。

しかし、何も起きないようです。

この/いくつかのハックまたは回避策の解決策はありますか、それともすべてをゼロから作成する必要がありますか? 私はC#の経験が豊富ですが、WPFは初めてです。

助けてください。

4

1 に答える 1

7

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

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

それよりも広いスコープを持たせたくない限り、それを DataGrid のリソースに入れて、その 1 つのグリッドにのみ影響するようにすることをお勧めします。

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

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

于 2011-10-31T11:36:22.190 に答える