如何在控件模板中使用目标的属性值

时间:2014-02-12 14:15:04

标签: c# wpf xaml

我需要对控件模板做什么才能让矩形随按钮的宽度而变化?

<ControlTemplate x:Key="MyButtonTemplate" TargetType="{x:Type Button}">
   <Grid>
      <Polygon ... />
      <Rectangle Width="{TemplateBinding Width}" />
      <Polygon ... />
   </Grid>
</ControlTemplate>

<Button Template="MyButtonTemplate" Width="25" />
<Button Template="MyButtonTemplate" Width="50" />
<Button Template="MyButtonTemplate" Width="75" />

我不希望矩形分别为25,50和75单位宽;相反,我可能希望矩形为22,47和72个单位宽(比按钮宽度短三个像素)。

我有没有办法在XAML中进行某种数学运算,或者我唯一可以使用像here列出的值转换器?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以为网格指定宽度并更改矩形的边距属性:

<ControlTemplate TargetType="{x:Type Button}">
    <Grid Width="{TemplateBinding Width}" Background="DarkBlue" >
         <Polygon />
              <Rectangle Margin="1.5,0,1.5,0" Fill="Aquamarine" />
         <Polygon />
    </Grid>
</ControlTemplate>