我正在爲需要Accordion控件的項目使用WPF Toolkit。該控件最初工作正常(有一個已知的設計錯誤,但沒有問題),但任何試圖控制的人都知道它附帶的奇怪的藍色背景。我想更改控件的默認背景,然後轉到Expression Blend,右鍵單擊AccordionItem實例,然後轉到編輯模板 - >編輯副本。我選擇將其全部應用於應用程序,並創建一個新模板(應該與原始模板相同)。該控件看起來完全一樣,但AccordionItem中的任何內容都不可見。沒有錯誤,沒有警告。他們只是隱形。當我在XAML中點擊他們的標籤時,我可以看到他們被選中,就好像他們在背後,但他們不是!當我從App.xaml中刪除(從未觸摸過的)控制模板時,它會恢復正常,但我又回到了藍色背景。這裏是由Blend創建的原始XAML模板:無法使用WPF工具包爲Accordion創建AccordionItem模板
<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>
我是否錯過了什麼?我不是非常習慣於模板和樣式,但是從「編輯副本」(處於未觸摸狀態)中的任何操作都應該與默認模板完全相同,但事實並非如此。我可以安全地刪除模板以外的其他設置器,並且它不會更改。 Template setter有一些內容,這使得AccordionItem行爲異常。