2013-01-19 70 views
2

由於我有一個Button的資源樣式控制模板,另外我在按鈕本身中定義了一個控件模板。但是Button的內容沒有顯示。我該如何解決這個問題?實現控制模板後,按鈕的內容不顯示

<Grid> 
     <Grid.Resources> 
     <Style TargetType="Button"> 
      <!--Set to true to not get any properties from the themes.--> 
      <Setter Property="OverridesDefaultStyle" Value="true"/> 
       <Setter Property="Background" Value="Yellow"/> 
       <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="Button"> 
         <Grid> 
           <Border TextBlock.Foreground="{TemplateBinding Foreground}" 
       x:Name="Border" 
       CornerRadius="10" 
       BorderThickness="1"/> 
            <ContentPresenter HorizontalAlignment="Center" 
          VerticalAlignment="Center"/> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
     </Grid.Resources> 
     <Button Name="test" Width="50" Height="60" Content="myvalue"> 
      <Button.Template> 
       <ControlTemplate> 
        <Grid> 
         <Ellipse Fill="{TemplateBinding Background}"/> 
         <ContentPresenter HorizontalAlignment="Center" 
          VerticalAlignment="Center"/>      
        </Grid> 
       </ControlTemplate> 
      </Button.Template> 
     </Button> 
    </Grid> 

回答

1

你應該ControlTemplate設置TargetTypeButton

<ControlTemplate TargetType="Button"> 
    <Grid> 
     <Ellipse Fill="{TemplateBinding Background}"/> 
     <ContentPresenter HorizontalAlignment="Center" 
          VerticalAlignment="Center"/>      
    </Grid> 
</ControlTemplate> 

解釋(來源msdn):

如果您有與 資源部分獨立的ControlTemplate的TargetType的屬性設置爲一個類型,該控件模板不 自動應用到該類型。相反,您需要指定 x:Key並明確應用模板。

另請注意,如果模板定義包含 ContentPresenter,則 ControlTemplate上需要TargetType屬性。

+0

是的。我可以查看內容。謝謝。請解釋爲什麼它沒有自動採用目標類型,需要特別提及「按鈕」? – Smaug

+0

@RameshMuthiah我在我的答案中加入瞭解釋。 – kmatyaszek

+0

Greate調查結果。感謝您的解釋。 – Smaug