1

我将 WPF Toolkit 用于需要 Accordion 控件的项目。该控件最初工作正常(有一个已知的设计错误,但没有问题),但任何尝试过该控件的人都知道它附带的奇怪的蓝色背景。我想更改控件的默认背景,然后转到 Expression Blend,右键单击 AccordionItem 实例,然后转到 Edit Template -> Edit a Copy。我选择按应用程序应用它,它会创建一个新模板(应该与原始模板相同)。该控件看起来完全相同,但 AccordionItem 内的任何内容都变得不可见。没有错误,没有警告。他们只是变得不可见。当我在 XAML 中单击它们的标记时,我可以看到它们被选中,就好像它们在某些东西后面,但它们不是!当我从 App.xaml 中删除(从未接触过的)控件模板时,它恢复正常,但我又回到了蓝色背景。这是由 Blend 创建的未改动的 XAML 模板:

    <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 行为异常。

4

1 回答 1

2

您只需删除Background="Blue"该属性所属的字符串,该字符串Grid是 的第一个子项Control Template

于 2012-09-18T11:10:15.520 回答