2011-11-01 131 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>