2011-11-01 133 views
0

我有下面的類:OnApplyTemplate()不叫,東西在模板屬性不會出現任何

namespace Controls 
{ 
    public class DropDownButton : Control 
    { 
     public DropDownButton() 
     { 
      this.DefaultStyleKey = typeof(DropDownButton); 
     } 

     public override void OnApplyTemplate() 
     { 
      base.OnApplyTemplate(); 
     } 
    } 
} 

而在XAML:

<Style TargetType="Controls:DropDownButton"> 
    <Setter Property="FontSize" Value="10"/> 
    <Setter Property="Height" Value="202"/> 
    <Setter Property="Foreground" Value="White"/> 
    <Setter Property="VerticalAlignment" Value="Center"/> 

    <Setter Property="Template"> 
     <Setter.Value> 
      <Button Content="Button1"> 
       <Button.Template> 
        <ControlTemplate TargetType="Button"> 
        </ControlTemplate> 
       </Button.Template> 
      </Button> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="MinWidth" Value="65"/> 
</Style> 

我有兩個問題(可能相關):控件中沒有顯示xaml中的按鈕,並且該控件根本沒有調用OnApplyTemplate()函數。控制的唯一的事情似乎是響應被設置其尺寸...

+1

你真的是模板設置爲一個按鈕,而不是包含一個控件模板按鈕? –

+0

我不確定你的意思? – tweetypi

+0

'Template'需要一個控制模板,但在你的'Setter.Value'中有'Button'。我希望有某種例外。 –

回答

2

Template缺乏其ControlTemplate元素:

<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate> <!-- This --> 
      <Button Content="Button1"> 
       <!-- ... --> 
      </Button> 
     </ControlTemplate> 
    </Setter.Value> 
</Setter>