1. 程式人生 > >WPF 學習之控制元件模板 ControlTemplate Triggers

WPF 學習之控制元件模板 ControlTemplate Triggers

控制元件模板ControlTemplate,有兩部分:VistualTree視覺樹,即是能看到的外觀;Trigger觸發器,裡面包括外部條件達到某一條件下會引起的響應。
<Window.Resources> <ControlTemplate x:Key="ButtonTempalted" TargetType="{x:Type Button}"> <Border Name="Border" BorderThickness="2" CornerRadius="3" BorderBrush="AliceBlue" Background
="Aqua" TextBlock.Foreground="White"> <ContentPresenter Margin="{TemplateBinding Padding}" HorizontalAlignment="Center" VerticalAlignment="Center" > </ContentPresenter> </Border> <ControlTemplate.Triggers> <
Trigger Property="IsMouseOver" Value="True" > <Setter TargetName="Border" Property="Background" Value="Red"></Setter> </Trigger> <Trigger Property="IsPressed" Value="True"> <Setter TargetName="Border"
Property="Background" Value="White"></Setter> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Window.Resources> <StackPanel Margin="5"> <Button Margin="5" Padding="3">Normal Button</Button> <Button Margin="5" Padding="3" Name="myBorder" Template="{StaticResource ResourceKey=ButtonTempalted}">Templated Button</Button> </StackPanel>
以上xml中描述
StackPanel 中添加了2個Button控制元件,一個不使用控制元件模板Normal Button 一個使用ButtonTempalted 控制元件模板資源
控制元件模板中包含視覚樹 和觸發器,在上述例子中我設定了 該控制元件模板目標型別為Button 在外觀設定中設定buuton的Border的外觀屬性 
需要注意的是如果僅如下設定border外觀,buuton控制元件不能正常顯示,此時還需要設定ContentPresenter內容表示器 設定內容元素的屬性
 <Border Name="Border" BorderThickness="2" CornerRadius="3" BorderBrush="AliceBlue" Background="Aqua" TextBlock.Foreground="White">
                
            </Border>

Trigger 觸發器設定控制元件模板的行為

 <Trigger Property="IsMouseOver" Value="True" >
                    <Setter TargetName="Border"   Property="Background" Value="Red"></Setter>
                </Trigger>

需要設定 Property 行為目標 Value觸發該行為的值