西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)其它知識 → WPF中的屬性、數(shù)據(jù)、事件觸發(fā)器詳細(xì)講解

WPF中的屬性、數(shù)據(jù)、事件觸發(fā)器詳細(xì)講解

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:本站整理時間:2011/1/31 20:22:12字體大。A-A+

作者:佚名點擊:835次評論:1次標(biāo)簽: WPF 觸發(fā)器

  • 類型:塔防游戲大小:34.5M語言:中文 評分:10.0
  • 標(biāo)簽:
立即下載
本文摘要:
1:屬性觸發(fā)器;
2:數(shù)據(jù)觸發(fā)器;
3:事件觸發(fā)器;

Style、ControlTemplate 和 DataTemplate 都有觸發(fā)器集合。
屬性觸發(fā)器只檢查WPF從屬屬性,而數(shù)據(jù)觸發(fā)器則可檢查任何一種可綁定的屬性。屬性觸發(fā)器一般用來檢查WPF可視元素的屬性,而數(shù)據(jù)觸發(fā)器則通常用來檢查不可視對象的屬性。
屬性觸發(fā)器:通過此機(jī)制,一個屬性的更改會在另一個屬性中觸發(fā)即時或動態(tài)更改。
數(shù)據(jù)觸發(fā)器:通過此機(jī)制,事件會在屬性中觸發(fā)動態(tài)更改。
數(shù)據(jù)觸發(fā)器:EventTrigger,它根據(jù)事件的引發(fā)來啟動一組操作,但這類操作僅限于動畫。


一:屬性觸發(fā)器
查看代碼片段1:

<Style TargetType="ListBoxItem">
<Setter Property="Opacity" Value="0.5" />
<Setter Property="MaxHeight" Value="75" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Trigger.Setters>
<Setter Property="Opacity" Value="1.0" />
</Trigger.Setters>
</Trigger>
</Style.Triggers>
</Style> 表示在ListBoxItem的IsSelected屬性變?yōu)門rue的時候,其另外一個屬性O(shè)pacity的值變?yōu)?.0。

1.1單個觸發(fā)器
代碼片段1就是單個觸發(fā)器。

1.2多個觸發(fā)器
可以為ListBoxItem設(shè)置多個觸發(fā)器。

1.3多條件屬性觸發(fā)器
多條件觸發(fā)器就是說,同時滿足幾個條件的時候才觸發(fā)行為。
如代碼片段2:

<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsFocused" Value="True"></Condition>
<Condition Property="Content" Value="{x:Null}"></Condition>
</MultiTrigger.Conditions>
<Setter Property="ToolTip" Value="content is null!"></Setter>
</MultiTrigger>二:數(shù)據(jù)觸發(fā)器
使用 DataTrigger,可以在數(shù)據(jù)對象的屬性值與指定的 Value 匹配時設(shè)置屬性值。例如,在顯示 Employee 對象列表時,可能希望前景色根據(jù)每個 Employee 的當(dāng)前出勤情況而變化。(例如,用紫色前景色顯示當(dāng)前正在休假的 Employee。)
查看代碼片段3

<Window.Resources>
<c:Places x:Key="PlacesData"/>

<Style TargetType="ListBoxItem">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=State}" Value="WA">
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=Name}" Value="Portland" />
<Condition Binding="{Binding Path=State}" Value="OR" />
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="Cyan" />
</MultiDataTrigger>
</Style.Triggers>
</Style>

<DataTemplate DataType="{x:Type c:Place}">
<Canvas Width="160" Height="20">
<TextBlock FontSize="12"
Width="130" Canvas.Left="0" Text="{Binding Path=Name}"/>
<TextBlock FontSize="12" Width="30"
Canvas.Left="130" Text="{Binding Path=State}"/>
</Canvas>
</DataTemplate>
</Window.Resources>

<StackPanel>
<TextBlock FontSize="18" Margin="5" FontWeight="Bold"
HorizontalAlignment="Center">Data Trigger Sample</TextBlock>
<ListBox Width="180" HorizontalAlignment="Center" Background="Honeydew"
ItemsSource="{Binding Source={StaticResource PlacesData}}"/>
</StackPanel>2.1單條件觸發(fā)
以上的DataTrigger就是一個單條件觸發(fā)器。

2.2多條件觸發(fā)
以上的MultiDataTrigger就是一個多條件觸發(fā)器。


三:事件觸發(fā)器
屬性觸發(fā)器用來檢查從屬屬性的值,數(shù)據(jù)觸發(fā)器用來檢查CLR屬性的值,而事件觸發(fā)器用來監(jiān)視事件。當(dāng)一個事件發(fā)生的時候,事件觸發(fā)器就會通過引發(fā)相關(guān)的動畫事件來響應(yīng)。
如代碼片段4:
<Style TargetType="ListBoxItem">
<Setter Property="Opacity" Value="0.5" />
<Setter Property="MaxHeight" Value="75" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Trigger.Setters>
<Setter Property="Opacity" Value="1.0" />
</Trigger.Setters>
</Trigger>
<EventTrigger RoutedEvent="Mouse.MouseEnter">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Duration="0:0:0.2"
Storyboard.TargetProperty="MaxHeight"
To="90" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="Mouse.MouseLeave">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Duration="0:0:1"
Storyboard.TargetProperty="MaxHeight" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
    魔獸塔防地圖
    (300)魔獸塔防地圖
    塔防,即炮塔防御的簡稱,也稱。塔防受眾很廣,游戲模式簡單而可玩性強(qiáng),是智力和策略的比拼。當(dāng)塔防與這兩種游戲類型融合在一起的話,游戲就會變得更好玩,同時也很休閑。小編在這里為大家搜集整理了許多魔獸爭霸塔防地圖,歡迎感興趣的玩家們前來下載。...更多>>
    塔防游戲
    (70)塔防游戲
    西西游戲網(wǎng)提供最新最熱門的塔防游戲,塔防游戲顧名思義就是炮塔防守游戲,玩家需要建造炮塔轟炸一些進(jìn)攻的敵人保衛(wèi)家園,塔防游戲操作都很簡單,就是在最合理的位置放置炮塔,無需其他的操作,可能有的塔防游戲會添加一些技能,但是也沒什么難度的哦.熱門游戲保衛(wèi)蘿卜獸人必須死炮塔防御塔防三國志等等,太多了。...更多>>

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(1)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)