WPF Toolkit Datagrid, стилизация селектораВсе - PullRequest
1 голос
/ 09 февраля 2012

Я хочу стилизовать верхний левый элемент этой таблицы данных, который выбирает все строки, но я не знаю как. У кого-нибудь есть пример для меня или кто-нибудь знает, какой элемент мне нужно стилизовать?

My Datagrid поставляется из набора инструментов WPF.

enter image description here

1 Ответ

2 голосов
/ 09 февраля 2012

Прежде всего, я бы посоветовал вам обновить до .net 4.0, чтобы иметь возможность использовать WPF dataGrid, не прибегая к установке WPFToolkit.

Теперь, что касается вашей проблемы, вы должны установитьстиль для вашей таблицы данных, а внутри стиля, шаблона или ресурса поместите такой код:

    <Style TargetType="{x:Type Button}" x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}">
        <EventSetter Event="PreviewMouseDown" Handler="SelectAllButtonPreviewMouseDownHandler" />
        <EventSetter Event="PreviewMouseUp" Handler="SelectAllButtonPreviewMouseUpHandler" />
        <Setter Property="ToolTip" Value="{Binding SelectAllButtonToolTip, RelativeSource={RelativeSource AncestorType=DataGrid}}" />
        <Setter Property="Content" Value="{Binding SelectAllButtonContent, RelativeSource={RelativeSource AncestorType=DataGrid}}" />
        <Setter Property="Focusable" Value="False" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Grid Background="Transparent" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
                        <Polygon Name="Arrow"
                                 HorizontalAlignment="Right"
                                 VerticalAlignment="Bottom"
                                 Margin="0,0,3,3"
                                 Points="0,9 9,9 9,0"
                                 Fill="Black"
                                 Opacity="0.15"
                                 Visibility="Collapsed"/>
                        <ContentPresenter Name="ContentSite" />
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="Content" Value="{x:Null}">
                            <Setter TargetName="ContentSite" Property="Visibility" Value="Collapsed"/>
                            <Setter TargetName="Arrow" Property="Visibility" Value="Visible"/>
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter TargetName="Arrow" Property="Opacity" Value="0.75"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
        </Setter.Value>
     </Setter>
    </Style>

(это пример моего кода, который я поместил в MyDataGrid.Resources, MyDataGrid - этокласс, производный от DataGrid)

edit: важной частью, конечно, является x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}" в объявителе стиля кнопки.

...