為你解開(kāi)WPF屬性觸發(fā)器之謎
WPF可以使用一種叫做觸發(fā)器的工具,來(lái)幫助我們完成圖形顯示功能。其中,WPF屬性觸發(fā)器是WPF中最常用的觸發(fā)器類(lèi)型,因?yàn)槲覀兦斑呎f(shuō)過(guò)依賴(lài)屬性具有垂直變更通知的功能,所以在使用屬性觸發(fā)器時(shí)會(huì)很方便,而且因?yàn)閃PF中每個(gè)控件超過(guò)2/3的屬性都是依賴(lài)屬性,所以它用到的場(chǎng)合更多。#t#
WPF屬性觸發(fā)器是在當(dāng)某個(gè)依賴(lài)屬性的值發(fā)生變化時(shí)觸發(fā)執(zhí)行一個(gè)Setter的集合,當(dāng)屬性失去這個(gè)值時(shí),這些被處罰執(zhí)行的Setter集合會(huì)自動(dòng)被撤銷(xiāo)。
例如,下邊的例子設(shè)置了當(dāng)鼠標(biāo)放置于按鈕之上懸停時(shí),按鈕的外表會(huì)發(fā)生變化。注意,WPF屬性觸發(fā)器是用Trigger標(biāo)識(shí)的。
- < Style x:Key="buttonMouseOver"
TargetType="{x:Type Button}">- < Style.Triggers>
- < Trigger Property="IsMouseOver"
Value="True">- < Setter Property="RenderTransform">
- < Setter.Value>
- < RotateTransform Angle="10">
< /RotateTransform>- < /Setter.Value>
- < /Setter>
- < Setter Property="RenderTrans
formOrigin" Value="0.5,0.5">
< /Setter>- < Setter Property="Background"
Value="#FF0CC030" />- < /Trigger>
- < /Style.Triggers>
- < /Style>
WPF屬性觸發(fā)器還經(jīng)常被用在做數(shù)據(jù)驗(yàn)證時(shí)用來(lái)顯示驗(yàn)證錯(cuò)誤信息。在WPF學(xué)習(xí)之綁定里的Validation部分我們附有用屬性觸發(fā)器來(lái)判斷是否有驗(yàn)證錯(cuò)誤并顯示相應(yīng)驗(yàn)證錯(cuò)誤信息的示例。
- < TextBox Style="{StaticResource
validateTextBoxStyle}">- < TextBox.Text>
- < Binding UpdateSourceTrigger=
"PropertyChanged" Path="Department">- < Binding.ValidationRules>
- < local:JpgValidationRule/>
- < /Binding.ValidationRules>
- < /Binding>
- < /TextBox.Text>
- < /TextBox>
- …..
- < Style x:Key="validateTextBoxStyle"
TargetType="{x:Type TextBox}">- < Setter Property="Width"
Value="300" />- < Style.Triggers>
- < Trigger Property="Validation.
HasError" Value="True">- < Setter Property="Background"
Value="Red"/>- < Setter Property="ToolTip"
Value="{Binding RelativeSource=
{RelativeSource Self}, Path=
(Validation.Errors)[0].
ErrorContent}"/>- < /Trigger>
- < /Style.Triggers>
- < /Style>
WPF屬性觸發(fā)器的介紹就到這里,希望對(duì)大家有些幫助。