silverlight
发布时间:2022-05-04 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight 触发器与动作(Triggers and Actions),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
概述
触发器和动作是协同工作的。当某件事情发生的时候,触发器就会引发并调用一个动作,触发器和动作组成了最简单的行为表现形式。 @R_
696_5179@ 创建一个动作: @R_
696_5179@ 想象一下,当用户完成一个操作(例如单击一个按钮),你希望能播放声音提示。如果不用行为的方式,是比较容易实现的。添加一个MediaElement到页面,提供音频文件的URI,然后在适当的时候调用MediaElement.Pla
触发器和动作是协同工作的。当某件事情发生的时候,触发器就会引发并调用一个动作,触发器和动作组成了最简单的行为表现形式。
@R_696_5179@ 创建一个动作:
@R_696_5179@ 想象一下,当用户完成一个操作(例如单击一个按钮),你希望能播放声音提示。如果不用行为的方式,是比较容易实现的。添加@L_863_1@mediaElement到页面,提供音频文件的URI,然后在适当的时候@L_812_0@mediaElement.Play()方法。但是,这些细节添加了不必要的混乱。如果希望播放一系列不同的声音提示响应不同的事件,那么就需要管理大量的代码。
@R_696_5179@ 可以用一个动作来管理声音提示的播放就避免了这个问题。首先,创一个Silverlight类库程序集,然后添加System.Windows.Interactivity.dll程序集的引用,最后创建一个 Action类派生自triggerAction类。Silverlight中的媒体支持有一个限制,如果想要通过MediaElement进行播放,即使只是打算播放普通的音频文件且没有可视化的呈现,必须把它放置于元素的层次结构,即页面的可视树(Visual Tree)中。
- public class PlaySoundAction : triggerAction<FrameworkElement>
- {
-
public static readonly DependencyProperty sourceProperty =
-
@R_696_5179@ DependencyProperty.Register("source", typeof(Uri), typeof(PlaySoundAction), new PropertyMetadata(null));
-
-
public Uri source
- {
-
@R_696_5179@ get
- @R_696_5179@ {
-
@R_696_5179@ return (Uri)GetValue(PlaySoundAction.sourceProperty);
- @R_696_5179@ }
-
@R_696_5179@ set
- @R_696_5179@ {
- @R_696_5179@ SETVALue(PlaySoundAction.sourceProperty, value);
- @R_696_5179@ }
- }
-
-
protected override void Invoke(object parameter)
- {
-
@R_696_5179@
- @R_696_5179@ Panel container = FindContainer();
-
@R_696_5179@ if (container != null)
- @R_696_5179@ {
-
@R_696_5179@
-
@R_696_5179@ MediaElement media = new MediaElement();
-
@R_696_5179@ media.source = this.source;
-
@R_696_5179@
- @R_696_5179@ media.MediaEnded += (s, E) => container.Children.Remove(media);
- @R_696_5179@ media.Media@R_301_1488@ += (s, E) => container.Children.Remove(media);
-
@R_696_5179@
-
@R_696_5179@ media.AutoPlay = true;
- @R_696_5179@ container.Children.Add(media);
- @R_696_5179@ }
- }
-
-
private Panel FindContainer()
- {
-
@R_696_5179@ FrameworkElement element = this.AssociatedObject;
-
@R_696_5179@
-
@R_696_5179@ while (element != null)
- @R_696_5179@ {
-
@R_696_5179@ if (element is Panel)
- @R_696_5179@ {
-
@R_696_5179@@R_696_5179@ return (Panel)element;
- @R_696_5179@ }
-
@R_696_5179@ element = VisualTreeHelper.GetParent(element) as FrameworkElement;
- @R_696_5179@ }
-
@R_696_5179@ return null;
- }
动作关联到元素:
@R_696_5179@ 要使用一个动作,需要触发器的帮助。触发器关联到元素,动作关联到触发器。使用PlaySoundAction的第一步就是要选择合适的触发器。所有的触发器派生自triggerBase类。System.Windows.Interactivity.dll程序集包含一个名为Eventtrigger的触发器,当一个特殊的事件发生的时候就会引发触发器。
@R_696_5179@ 使用PlaySoundAction,首先创建一个新的Silverlight项目,添加定义了PlaySoundAction类所在的Silverlight类库程序集、System.Windows.Interactivity.dll程序集的引用,然后在XAML中映射这两个命名空间,假定PlaySoundAction类在SilverLightclassLibrary1.dll中。
- <UserControl x:Class="SilverlightApplication1.behaviors.ActionSample"
-
xmlns="http://scheR_856_11845@as.microsoft.com/winfx/2006/xaml/presentation"
-
xmlns:x="http://scheR_856_11845@as.microsoft.com/winfx/2006/xaml"
-
xmlns:d="http://scheR_856_11845@as.microsoft.com/expression/blend/2008"
-
xmlns:mc="http://scheR_856_11845@as.openxmlformats.org/markup-compatibility/2006"
-
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
-
xmlns:custom="clr-namespace:SilverLightclassLibrary1;assembly=SilverLightclassLibrary1"
-
@H_244_410@mc:Ignorable="d"
-
d:DesignHeight="300" d:DesignWidth="400">
-
-
<Grid x:Name="LayoutRoot" BACkground="White">
-
@R_696_5179@ <Button Content="点击播放语言提示" Width="130" Height="50"
-
@R_696_5179@@R_696_5179@ HorizontalAlignment="Center" VerticalAlignment="Center">
-
@R_696_5179@ <i:Interaction.triggers>
-
@R_696_5179@@R_696_5179@ <i:Eventtrigger EventName="Click">
-
@R_696_5179@@R_696_5179@ <custom:PlaySoundAction source="test.mp3" />
-
@R_696_5179@@R_696_5179@ </i:Eventtrigger>
-
@R_696_5179@ </i:Interaction.triggers>
-
@R_696_5179@ </Button>
-
</Grid>
-
</UserControl>
本文
链接地址为:
http://blog.csdn.net/fan_ken/article/details/6727380
大佬总结
以上是大佬教程为你收集整理的Silverlight 触发器与动作(Triggers and Actions)全部内容,希望文章能够帮你解决Silverlight 触发器与动作(Triggers and Actions)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。