silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight 触发器与动作(Triggers and Actions)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_607_0@

概述

    触发器和动作是协同工作的。当某件事情发生的时候,触发器就会引发并调用一个动作,触发器和动作组成了最简单的行为表现形式。         创建一个动作:         想象一下,当用户完成一个操作(例如单击一个按钮),你希望能播放声音提示。如果不用行为的方式,是比较容易实现的。添加一个MediaElement到页面,提供音频文件的URI,然后在适当的时候调用MediaElement.Pla

    触发器和动作是协同工作的。当某件事情发生的时候,触发器就会引发并调用一个动作,触发器和动作组成了最简单的行为表现形式。

        创建一个动作:

        想象一下,当用户完成一个操作(例如单击一个按钮),你希望能播放声音提示。如果不用行为的方式,是比较容易实现的。添加@L_966_1@mediaElement到页面,提供音频文件的URI,然后在适当的时候@L_934_0@mediaElement.Play()方法。但是,这些细节添加了不必要的混乱。如果希望播放一系列不同的声音提示响应不同的事件,那么就需要管理大量的代码

         可以用一个动作来管理声音提示的播放就避免了这个问题。首先,创一个Silverlight类库程序集,然后添加System.Windows.Interactivity.dll程序集的引用,最后创建一个 Action类派生自triggerAction类。Silverlight中的媒体支持一个限制,如果想要通过MediaElement进行播放,即使只是打算播放普通的音频文件且没有可视化的呈现,必须把它放置于元素的层次结构,即页面的可视树(Visual Tree)中。

  1. public class PlaySoundAction : triggerAction<FrameworkElement>  
  2. {  
  3.     public static readonly DependencyProperty sourceProperty =  
  4.         DependencyProperty.Register("source"typeof(Uri), typeof(PlaySoundAction), new PropertyMetadata(null));  
  5.   
  6.     public Uri source  
  7.     {  
  8.         get  
  9.         {  
  10.             return (Uri)GetValue(PlaySoundAction.sourceProperty);  
  11.         }  
  12.         set  
  13.         {  
  14.             SETVALue(PlaySoundAction.sourceProperty, value);  
  15.         }  
  16.     }  
  17.   
  18.     protected override void Invoke(object parameter)  
  19.     {  
  20.         //查找一个位置以便@L_211_7@mediaElement   
  21.         Panel container = FindContainer();  
  22.         if (container != null)  
  23.         {  
  24.             //创建并配置MediaElement   
  25.             MediaElement media = new MediaElement();  
  26.             media.source = this.source;  
  27.             //播放完成时清除MediaElement  
  28.             media.MediaEnded += (s, E) => container.Children.Remove(media);  
  29.             media.Media@R_301_1488@ += (s, E) => container.Children.Remove(media);  
  30.             //@L_211_7@mediaElement开始播放   
  31.             media.AutoPlay = true;  
  32.             container.Children.Add(media);  
  33.         }  
  34.     }  
  35.   
  36.     private Panel FindContainer()  
  37.     {  
  38.         FrameworkElement element = this.AssociatedObject;  
  39.         //向上寻找可以@L_211_7@mediaElement的布局容器  
  40.         while (element != null)  
  41.         {  
  42.             if (element is Panel)  
  43.             {  
  44.                 return (Panel)element;  
  45.             }  
  46.             element = VisualTreeHelper.GetParent(element) as FrameworkElement;  
  47.         }  
  48.         return null;  
  49.     }  


 

动作关联到元素:

         要使用一个动作,需要触发器的帮助。触发器关联到元素,动作关联到触发器。使用PlaySoundAction的第一步就是要选择合适的触发器。所有的触发器派生自triggerBase类。System.Windows.Interactivity.dll程序集包含一个名为Eventtrigger的触发器,当一个特殊的事件发生的时候就会引发触发器。

         使用PlaySoundAction,首先创建一个新的Silverlight项目,添加定义了PlaySoundAction类所在的Silverlight类库程序集、System.Windows.Interactivity.dll程序集的引用,然后在XAML中映射这两个命名空间,假定PlaySoundAction类在SilverLightclassLibrary1.dll中。

  1. <UserControl x:Class="SilverlightApplication1.behaviors.ActionSample"  
  2.     xmlns="http://scheR_433_11845@as.microsoft.com/winfx/2006/xaml/presentation"  
  3.     xmlns:x="http://scheR_433_11845@as.microsoft.com/winfx/2006/xaml"  
  4.     xmlns:d="http://scheR_433_11845@as.microsoft.com/expression/blend/2008"  
  5.     xmlns:mc="http://scheR_433_11845@as.openxmlformats.org/markup-compatibility/2006"  
  6.     xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"  
  7.     xmlns:custom="clr-namespace:SilverLightclassLibrary1;assembly=SilverLightclassLibrary1"  
  8.     @H_971_410@mc:Ignorable="d"  
  9.     d:DesignHeight="300" d:DesignWidth="400">  
  10.       
  11.     <Grid x:Name="LayoutRoot" BACkground="White">  
  12.         <Button Content="点击播放语言提示" Width="130" Height="50"   
  13.                 HorizontalAlignment="Center" VerticalAlignment="Center">  
  14.             <i:Interaction.triggers>  
  15.                 <i:Eventtrigger EventName="Click">  
  16.                     <custom:PlaySoundAction source="test.mp3" />  
  17.                 </i:Eventtrigger>  
  18.             </i:Interaction.triggers>  
  19.         </Button>  
  20.     </Grid>  
  21. </UserControl>  
本文链接地址为: http://blog.csdn.net/fan_ken/article/details/6727380

大佬总结

以上是大佬教程为你收集整理的Silverlight 触发器与动作(Triggers and Actions)全部内容,希望文章能够帮你解决Silverlight 触发器与动作(Triggers and Actions)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。