0
<Style TargetType="DataGridColumnHeader">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
                <Border x:Name="buttonBorderOuter"
                        BorderBrush="#DBDBDB"
                        BorderThickness="1"
                        Background="#00ECECEC"
                        Padding="2">
                    <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                      VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                      SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                    <Border.Triggers>
                        <EventTrigger RoutedEvent="MouseEnter">
                            <BeginStoryboard>
                                <Storyboard>
                                    ...
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                        <EventTrigger RoutedEvent="MouseLeave">
                            <BeginStoryboard>
                                <Storyboard>
                                    ...
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                    </Border.Triggers>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

上記のコードは、 の myStyleを示していDataGridColumnHeaderます。MouseEnterandエフェクトで問題なく動作していますMouseLeaveが、気に入らない点がいくつかあります。私が今持っているものはこの下にあります。

ここに画像の説明を入力

ここでの問題は、 のそれぞれCellHeader境界線が丸くなっていることです。の 2Cellsの間Headerが 1 つの直線であることが必要です。また、 のいずれかをクリックするCellsHeader、ソート用の矢印が表示されず、ソートされた列であることが強調表示されません。

誰かが自分で編集して欲しいものを達成できるテンプレートを持っていますか? または、編集しなければならない部分は何ですか?

4

1 に答える 1

1

デフォルトでは、DataGridColumnHeadersPresenter は、DataGrid ヘッダーの背景に全幅の追加の列ヘッダーを描画します。ダミーのヘッダーを省略するだけで、必要なものが得られます。そのスタイルをスタイルに追加します。

    <Style TargetType="{x:Type DataGridColumnHeadersPresenter}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type DataGridColumnHeadersPresenter}">
                    <Grid>
                        <ItemsPresenter />
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
于 2014-06-28T06:20:12.670 に答える