1

これまで、GridViewColumnHeadersでいくつかの問題が発生しました。もともと、各列ヘッダーの間に小さな白いスライバーがあるという問題がありました。borderthicknessを0に設定しても、白い線は引き続き存在します。周りを見回した後、ControlTemplateを使用して、ヘッダーをデフォルトのテキストボックス属性に変更する必要があることがわかりました。私はこのコードを使用しました:

<Style x:Key="gridHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type GridViewColumnHeader}">
                        <TextBox Text="{TemplateBinding Content}" 
                                 FontWeight="Bold"
                                 FontFamily="Arial"
                                 FontSize="11"
                                 Foreground="#00648D"
                                 Padding="5,0,5,0" 
                                 BorderBrush="#7EB0CC" 
                                 BorderThickness="0,0,2,2"
                                 HorizontalContentAlignment="Center"
                                 VerticalContentAlignment="Center"
                                 IsReadOnly="True"
                                 Background="Transparent"/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

これは機能し、ヘッダー列の間の小さな白いスライバーを削除しました。また、ユーザーが列を移動したりサイズ変更したりすることを防ぎ、フォーマットを台無しにしてしまいました。ただし、下の画像に示すように、gridviewcolumnheaderの最後にまだ少し白いスライバーがあります。

ここに画像の説明を入力してください

それを削除する方法もありますか?

4

1 に答える 1

2

その空白は、ヘッダーを取得してサイズ変更するオブジェクトです。ヘッダー列ではなくGridViewテンプレートの一部なので、ヘッダーテンプレートを書き直しても存在すると思います

GridView テンプレート全体を上書きせずにこれらの色を上書きする方法があるかどうかはわかりませんが、ビジュアル ツリーが読み込まれたらナビゲートし、そこから背景色を手動で設定できます。

LoadedListView のイベントといくつかのビジュアル ツリー ヘルパーを使用した例を次に示します。

private void ListView_Loaded(object sender, RoutedEventArgs e)
{
    var thumb = VisualTreeHelpers.FindChild<Thumb>((DependencyObject)sender, "PART_HeaderGripper");
    if (thumb == null) return;
    thumb.Background = Brushes.Transparent;

    var thumbContent = VisualTreeHelpers.FindChild<Border>(thumb);
    if (thumbContent == null) return;
    thumbContent.Background = Brushes.Transparent;
}

結果

例

ListView の ControlTemplate を上書きしたい場合は、ここで既定の XAML を見つけることができます。

于 2012-01-03T15:44:50.033 に答える