天天看點

WPF學習筆記--控件模闆

WPF隻是定義了控件的作用,并沒有定義控件的外觀。我們可以使用控件模闆來定義控件的外觀。

Template是控件的一個屬性,是以可以定義到樣式中。

<Style x:Key="CalcButton" TargetType="Button">

<Setter Property="Template">

<Setter.Value>

<ControlTemplate TargetType="Button">

<Ellipse Fill="LightGreen" />

</ControlTemplate>

</Setter.Value>

</Setter>

<Setter Property="Control.Margin" Value="10"/>

</Style>

這裡定義的控件模闆有其先天不足:沒有顯示按鈕上的内容。需要添加ContentPresenter。

<ControlTemplate TargetType="Button">

<Grid>

<Ellipse Fill="LightGreen"/>

<ContentPresenter HorizontalAlignment="Center"

VerticalAlignment="Center"/>

</Grid>

</ControlTemplate>

模闆綁定

雖然樣式很好的定義了一類控件,但是其定義的屬性值都是在定義樣式時固定死了的。如何能使控件指定自己獨立的屬性值呢?

我們需要使用模闆綁定。

<Ellipse Fill="LightGreen" Stroke="{TemplateBinding Control.BorderBrush}"/>

這樣就是把模闆中的某一屬性值綁定到了控件的某一屬性上。

觸發器

使用觸發器,當觸發條件滿足時,觸發器中的值和資料才會有效,如:

<Style x:Key="CalcButton" TargetType="Button">

<Setter Property="Template">

<Setter.Value>

<ControlTemplate TargetType="Button">

<Grid>

<Ellipse x:Name="theEllipse" Fill="LightGreen"

Stroke="{TemplateBinding Control.BorderBrush}"/>

<ContentPresenter HorizontalAlignment="Center"

VerticalAlignment="Center"/>

</Grid>

<ControlTemplate.Triggers>

<Trigger Property="Button.IsPressed" Value="True" >

<Setter TargetName="theEllipse"

Property="Fill" Value="Yellow"/>

</Trigger>

</ControlTemplate.Triggers>

</ControlTemplate>

</Setter.Value>

</Setter>

繼續閱讀