HighlightBrushKey不突出显示整行

时间:2014-07-29 16:38:02

标签: wpf templates datagrid row highlight

我为Template制作了DataGrid,我更改了SystemColors.HighlightBrushKey的颜色。但有一个问题。颜色显示正确,但在右侧有一个没有突出显示的小条带。你可以在图片中看到这一点。蓝色(选定)行不会一直到行的右侧。

Preview

以下是我制作的Template

<Style TargetType="{x:Type DataGrid}">
    <Style.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
                         Color="#F50099FF" />
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}"
                         Color="#FFCCFFFF" />
    </Style.Resources>
    <Setter Property="IsReadOnly"
            Value="True" />
    <Setter Property="BorderThickness"
            Value="0" />
    <Setter Property="GridLinesVisibility"
            Value="None" />
    <Setter Property="RowHeaderWidth"
            Value="0" />
    <Setter Property="Background"
            Value="Transparent" />
    <Setter Property="RowBackground"
            Value="Transparent" />
    <Setter Property="AlternatingRowBackground"
            Value="#F5E5E5E5" />
    <Setter Property="SelectionMode"
            Value="Single" />
    <Setter Property="SelectionUnit"
            Value="FullRow" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGrid}">
                <Border BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}"
                        Background="{TemplateBinding Background}"
                        Padding="{TemplateBinding Padding}"
                        SnapsToDevicePixels="True">
                    <ScrollViewer x:Name="DG_ScrollViewer"
                                  Focusable="False">
                        <ScrollViewer.Template>
                            <ControlTemplate TargetType="{x:Type ScrollViewer}">
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition />
                                        <ColumnDefinition Width="Auto" />
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto" />
                                        <RowDefinition />
                                        <RowDefinition Height="Auto" />
                                    </Grid.RowDefinitions>
                                    <Button Command="ApplicationCommands.SelectAll"
                                            Focusable="False"
                                            Style="{DynamicResource {ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}}"
                                            Width="{Binding CellsPanelHorizontalOffset, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type DataGrid}}}">
                                        <Button.Visibility>
                                            <Binding Path="HeadersVisibility"
                                                     RelativeSource="{RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type DataGrid}}">
                                                <Binding.ConverterParameter>
                                                    <DataGridHeadersVisibility>All</DataGridHeadersVisibility>
                                                </Binding.ConverterParameter>
                                            </Binding>
                                        </Button.Visibility>
                                    </Button>
                                    <DataGridColumnHeadersPresenter x:Name="PART_ColumnHeadersPresenter"
                                                                    Grid.Column="1">
                                        <DataGridColumnHeadersPresenter.Visibility>
                                            <Binding Path="HeadersVisibility"
                                                     RelativeSource="{RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type DataGrid}}">
                                                <Binding.ConverterParameter>
                                                    <DataGridHeadersVisibility>Column</DataGridHeadersVisibility>
                                                </Binding.ConverterParameter>
                                            </Binding>
                                        </DataGridColumnHeadersPresenter.Visibility>
                                    </DataGridColumnHeadersPresenter>
                                    <ScrollContentPresenter x:Name="PART_ScrollContentPresenter"
                                                            CanContentScroll="{TemplateBinding CanContentScroll}"
                                                            CanHorizontallyScroll="False"
                                                            Grid.ColumnSpan="2"
                                                            CanVerticallyScroll="False"
                                                            ContentTemplate="{TemplateBinding ContentTemplate}"
                                                            Content="{TemplateBinding Content}"
                                                            ContentStringFormat="{TemplateBinding ContentStringFormat}"
                                                            Grid.Row="1" />
                                    <ScrollBar x:Name="PART_VerticalScrollBar"
                                               Grid.Column="2"
                                               Maximum="{TemplateBinding ScrollableHeight}"
                                               Orientation="Vertical"
                                               Grid.RowSpan="2"
                                               Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
                                               Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
                                               ViewportSize="{TemplateBinding ViewportHeight}"
                                               Template="{DynamicResource MyVerticalScrollBar}" />
                                    <ScrollBar x:Name="PART_HorizontalScrollBar"
                                               Grid.Row="2"
                                               Grid.ColumnSpan="2"
                                               Maximum="{TemplateBinding ScrollableWidth}"
                                               Orientation="Horizontal"
                                               Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
                                               Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
                                               ViewportSize="{TemplateBinding ViewportWidth}"
                                               Template="{DynamicResource MyHorizontalScrollBar}" />
                                </Grid>
                            </ControlTemplate>
                        </ScrollViewer.Template>
                        <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                    </ScrollViewer>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

任何人都知道可能出现什么问题?

0 个答案:

没有答案