2012-02-07 35 views
2

我正在爲需要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行爲異常。

回答

2

你只是刪除字符串Background="Blue"這個屬性是Grid這是Control Template的第一個孩子。