Применить шаблон элемента управления к пользовательской XamDataGrid - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь создать ControlTemplate для своего класса CustomXamDataGrid, который наследуется от инфраструктуры XamDataGrid. Я хочу показать что-то вроде строки состояния, которая показывает, сколько записей есть или выбрано в нижней части XamDataGrid.

Я пробовал примерно так:

<Style TargetType="{x:Type controls:CustomXamDataGrid}">
        <Setter Property="Background" Value="{StaticResource XamGridBackgroundBrush}" />
        <Setter Property="BorderBrush" Value="{StaticResource XamGridBorderBrush}" />
        <Setter Property="BorderThickness" Value="1" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type controls:CustomXamDataGrid}">
                    <Border x:Name="Root" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="*"/>
                                <RowDefinition Height="Auto"/>
                            </Grid.RowDefinitions>

                            <Grid Background="{TemplateBinding Background}">
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="*" />
                                    <RowDefinition Height="Auto" />
                                </Grid.RowDefinitions>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="Auto" />
                                </Grid.ColumnDefinitions>

                                <ScrollViewer x:Name="PART_ContentHost" />
                                <ScrollBar x:Name="VerticalScrollBar" Width="22" Grid.Row="0" Grid.Column="1" Style="{StaticResource ScrollBarStyleDoubleArrows}" />
                                <ScrollBar x:Name="HorizontalScrollBar" Height="16" Grid.Row="2" Style="{StaticResource ScrollBarStyle}" />
                            </Grid>

                            <Border Height="25" 
                                        Visibility="Visible" 
                                        Grid.Row="1" 
                                        Margin="0,-1,0,0" 
                                        HorizontalAlignment="Stretch"                       
                                        Background="{TemplateBinding Background}" 
                                        BorderBrush="{TemplateBinding BorderBrush}" 
                                        BorderThickness="0,1,0,0" SnapsToDevicePixels="True">
                                <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
                                    <Label Content="Total Records: XXX (TODO: Template Binding)" Foreground="Black"/>
                                    <Label Content="Visible Records: XXX (TODO: Template Binding)" Margin="15,0,0,0" Visibility="Visible" Foreground="Black"/>
                                    <Label Content="Selected Records: XXX (TODO: Template Binding)" Margin="15,0,30,0" Foreground="Black"/>
                                </StackPanel>
                            </Border>
                        </Grid>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Отображается только строка состояния правильно. Сам XamDataGrid с его столбцами и строками совершенно пуст.

...