WPF中触发器Trigger、MultiTrigger、DataTrigger、MultiDataTrigger、EventTrigger几种

WPF中有种叫做触发器的东西(记住不是数据库的trigger哦)。它的主要作用是根据trigger的不同条件来自动更改外观属性,或者执行动画等操作。

WPFtrigger的主要类型有:Trigger、MultiTrigger、DataTrigger、MultiDataTrigger、EventTrigger几种。从字面意思上我们想大家已经知道个大概,接下来我将还会用实例代码逐一进行介绍。trigger主要运用的场景在Style、ControlTemplate、DataTemplate三个地方。在这些地方可以使用trigger,具体视情况而定。

1.在Style中使用各种trigger

在style中使用的trigger主要是属性的触发器,当属性的值发生改变是将会引发触发器。

a.普通属性trigger  当鼠标滑过时字体变成红色

  "Style Trigger MouseOver Red"> 
             
                 
             
         

b.普通属性MultiTrigger  当checkbox勾选并且鼠标滑过时字体变成绿色

  "Style MultiTrigger Checked and MouseOver Green "> 
             
                 
             
         

c.EventTrigger 鼠标划入长度变长 鼠标移出 长度变短

"Style EventTrigger " Width="70" HorizontalAlignment="Left"> 
            
                
            
        

2.在ControlTemplate中使用trigger

 

在ControlTemplate中使用的trigger主要是在controltemplate中的元素的触发器,当属性的值发生改变是将会引发触发器。

属性为“Border” 的鼠标滑过时背景变色,其他的trigger同上面的style一样 这里就不多举例了

 

3.在DataTemplate中使用trigger

在DataTemplate中使用trigger可以根据绑定的数据不同显示不同的内容。

"_tree" Margin="0" BorderThickness="0" VerticalAlignment="Stretch" Background="Transparent" ItemsSource="{Binding Children}" > 
                 
                    "{Binding Children}"> 
                        "0" Margin="1"  x:Name="back" MinWidth="70" 
                                Background="Transparent" DataContext="{Binding}" PreviewMouseMove="TreeItem_PreviewMouseMove"> 
                            "Horizontal" Margin="2"> 
                                "BGimage" Source="/Vdc3D.Coms.DModelEditor;component/Images/item.png" Height="15" Width="15" /> 
                                "{Binding ShowText}" Margin="2 0"/> 
                             
                             
                                "menu" > 
                                    "Add Directory" x:Name="menu_addDir" Click="AddDir_Click" DataContext="{Binding}"/> 
                                    "Add Property" x:Name="menu_addChild"  Click="AddChild_Click" DataContext="{Binding}"/> 
                                    "Edit" Click="Modify_Click" DataContext="{Binding}"/> 
                                    "Delete" Click="Delete_Click" DataContext="{Binding}"/> 
                                 
                             
                         
                         
                             
                                 
                                    "{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type TreeViewItem}},Path=IsExpanded}"  Value="False"/> 
                                    "{Binding IsDir}" Value="True"/> 
                                 
                                 
                                    "BGimage" Property="Source" Value="/Vdc3D.Coms.DModelEditor;component/Images/dir.png" /> 
                                 
                             
                             
                                 
                                    "{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type TreeViewItem}},Path=IsExpanded}"  Value="True"/> 
                                    "{Binding IsDir}" Value="True"/> 
                                 
                                 
                                    "BGimage" Property="Source" Value="/Vdc3D.Coms.DModelEditor;component/Images/dir_open.png" /> 
                                 
                             
                            "{Binding IsDir}" Value="True"> 
                                "menu_addDir"  Property="Visibility" Value="Visible"/> 
                                "menu_addChild"  Property="Visibility" Value="Visible"/> 
                             
                            "{Binding IsDir}" Value="False"> 
                                "menu_addDir"  Property="Visibility" Value="Collapsed"/> 
                                "menu_addChild"  Property="Visibility" Value="Collapsed"/> 
                             
                         
                     
                 
             
这是一个treeview控件 根据绑定的isdir值不同 可以显示icon是一个目录(文件夹)或者是一个文件,看是不是很简单呢

 

以上只是简单的介绍了trigger的一些用法,具体的功能大家可以自由发挥,这也是wpf的强大之处

 

转载于:https://www.cnblogs.com/Im-Victor/p/10680594.html

你可能感兴趣的:(WPF中触发器Trigger、MultiTrigger、DataTrigger、MultiDataTrigger、EventTrigger几种)