Не удается создать шаблон AccordionItem для Accordion из WPF Toolkit - PullRequest
2 голосов
/ 07 февраля 2012

Я использую WPF Toolkit для проекта, которому нужен элемент управления Accordion.Элемент управления изначально работает нормально (есть известная ошибка проектирования, но в остальном проблем нет), но любой, кто попробовал элемент управления, знает, что с ним идет странный синий фон.Я хочу изменить фон по умолчанию для элемента управления, и я иду в Expression Blend, щелкните правой кнопкой мыши на экземпляре AccordionItem и перейдите в Edit Template -> Edit a Copy.Я выбираю применить все приложения, и он создает новый шаблон (который должен быть идентичен оригиналу).Элемент управления выглядит точно так же, но все внутри AccordionItem становится невидимым.Нет ошибок, нет предупреждений.Они просто становятся невидимыми.Когда я нажимаю на их тег в XAML, я вижу, что они выбраны, как будто они за чем-то стоят, но это не так!Когда я удаляю (никогда не трогал) шаблон элемента управления из App.xaml, он возвращается к нормальному состоянию, но я снова возвращаюсь с синим фоном.Вот нетронутый шаблон XAML, созданный Blend:

    <Style TargetType="{x:Type System_Windows_Controls:AccordionItem}">
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="BorderBrush" Value="#FFECECEC"/>
        <Setter Property="Background" Value="White"/>
        <Setter Property="Margin" Value="0"/>
        <Setter Property="Padding" Value="0"/>
        <Setter Property="HorizontalAlignment" Value="Stretch"/>
        <Setter Property="VerticalAlignment" Value="Stretch"/>
        <Setter Property="HorizontalContentAlignment" Value="Left"/>
        <Setter Property="VerticalContentAlignment" Value="Top"/>
        <Setter Property="IsTabStop" Value="False"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type System_Windows_Controls:AccordionItem}">
                    <Grid Background="Blue" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}">
                        <Border x:Name="Background" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="1" Padding="{TemplateBinding Padding}">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition x:Name="cd0" Width="Auto"/>
                                    <ColumnDefinition x:Name="cd1" Width="Auto"/>
                                </Grid.ColumnDefinitions>
                                <Grid.RowDefinitions>
                                    <RowDefinition x:Name="rd0" Height="Auto"/>
                                    <RowDefinition x:Name="rd1" Height="Auto"/>
                                </Grid.RowDefinitions>
                                <System_Windows_Controls_Primitives:AccordionButton x:Name="ExpanderButton" Background="{TemplateBinding Background}" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Foreground="{TemplateBinding Foreground}" FontWeight="{TemplateBinding FontWeight}" FontStyle="{TemplateBinding FontStyle}" FontStretch="{TemplateBinding FontStretch}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsTabStop="True" IsChecked="{TemplateBinding IsSelected}" Margin="0" Padding="0" Grid.Row="0" Style="{TemplateBinding AccordionButtonStyle}" VerticalAlignment="{TemplateBinding VerticalAlignment}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
                                <System_Windows_Controls_Primitives:ExpandableContentControl x:Name="ExpandSite" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" FontWeight="{TemplateBinding FontWeight}" FontStyle="{TemplateBinding FontStyle}" FontStretch="{TemplateBinding FontStretch}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsTabStop="False" Margin="0" Percentage="0" RevealMode="{TemplateBinding ExpandDirection}" Grid.Row="1" Style="{TemplateBinding ExpandableContentControlStyle}" VerticalAlignment="{TemplateBinding VerticalAlignment}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}">
                                    <System_Windows_Controls_Primitives:ExpandableContentControl.Clip>
                                        <RectangleGeometry/>
                                    </System_Windows_Controls_Primitives:ExpandableContentControl.Clip>
                                </System_Windows_Controls_Primitives:ExpandableContentControl>
                            </Grid>
                        </Border>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Я что-то упустил?Я не очень привык к шаблонам и стилям, но что-либо из «Редактировать копию», в нетронутом состоянии, должно действовать идентично шаблону по умолчанию, но это не так.Я могу безопасно удалить сеттеры, кроме шаблона, и он не изменится.В установщике шаблонов есть что-то, что заставляет AccordionItem работать ненормально.

1 Ответ

2 голосов
/ 18 сентября 2012

Вы просто удаляете строку Background="Blue", это свойство имеет Grid, который является первым дочерним элементом Control Template.

...