MVVM
M—Model—数据模型
V—View—视图(界面XAML)
VM—ViewModel—视图模型(逻辑、控制器)
事件绑定机制:
首先建立视图(V)和视图逻辑(VM)的绑定
在Silverlight对应的cs文件中添加如下代码
[ExportAsView(typeof(Background_UC), IsShell = false)]导出视图 例子:
在对应的VM层文件中添加如下代码:
[ExportAsViewModel(typeof(Background_UC_ViewModel))]导出VM 例子:
在MainViewModel中建立视图与模型的对应关系:
在控件内部添加事件绑定的action: 代码如下:
代码解释:
为事件追踪标记要追踪的事件为Loaded事件 Command=\"{Binding Path=LoadedCommand}\"为处理事件的action, CommandParameter=\"{Binding ElementName=LayoutRoot}为触发事件的元素Command=\"{BindingPath=LoadedCommand}\"
CommandParameter=\"{Binding ElementName=LayoutRoot}\"/>
视图逻辑层(VM层)编写action
定义一个Grid类型的Action变量:LoadedCommand;
public IActionCommand LoadedCommand { get; private set; } 在构造方法中进行实例化:编写实现action的方法:
运行程序:页面
silverlight数据绑定机制:
首先将视图(V)和模型(M)进行关联
后台定义一个数据集:
前台对数据进行绑定:
执行结果:
MediaElement类的属性、事件和方法
MediaElement 类是在命名空间System.Windows.Controls下的类,属于Windows Phone的Silverlight控件。不过它的属性、方法和事件比较多,下面来看一下它的一些重要的属性、方法和事件分别如表8.1、表8.2以及表8.3所示。
表8.1 MediaElement 类的一些重要的属性
名称 AudioStreamCount AudioStreamIndex 说明 获取当前媒体文件中可用的音频流的数目。 获取或设置与视频组件一起播放的音频 流的索引。音频流的集合在运行时组合, 并且表示可用于媒体文件内的所有音频流。 AutoPlay 获取或设置一个值,该值指示在设置 Source 属性时媒体是否将自动开始播放。 Balance BufferingProgress BufferingTime CanPause 获取或设置立体声扬声器的音量比。 获取指示当前缓冲进度的值。 获取或设置要缓冲的时间长度。 获取一个值,该值指示在调用 Pause 方法时媒体是否可暂停。 CanSeek 获取一个值,该值指示是否可以通过设置 Position 属性的值来重新定位媒体。 CurrentState DownloadProgress 获取 MediaElement 的状态。 获取一个百分比值,该值指示为位于远程 服务器上的内容完成的下载量。 DownloadProgressOffset DroppedFramesPerSecond IsMuted IsUsedForExternalVideoOnly 获取下载进度的偏移量。 获取媒体每秒正在丢弃的帧数。 获取或设置一个值,该值指示是否已静音。 获取或设置一个值, 该值指示是否使用外部视频。 NaturalDuration NaturalVideoHeight NaturalVideoWidth Position RenderedFramesPerSecond Source Stretch 获取当前打开的媒体文件的持续时间。 获取与媒体关联的视频的高度。 获取与媒体关联的视频的宽度。 获取或设置媒体播放时间的当前进度位置。 获取媒体每秒正在呈现的帧数。 获取或设置 MediaElement 上的媒体来源。 获取或设置一个 Stretch 值,该值描述 MediaElement 如何填充目标矩形。 VideoSessionHandle Volume 获取视频会话的句柄。 获取或设置媒体的音量。 表8.2 MediaElement 类的一些重要的方法
名称 Pause Play RequestLog 说明 在当前位置暂停媒体。 从当前位置播放媒体。 发送一个请求,以生成随后将 通过 LogReady 事件引发的记录。 SetSource(MediaStreamSource) 这会将 MediaElement 的源设 置为 MediaStreamSource 的子类。 SetSource(Stream) Stop ToString 使用提供的流设置 Source 属性。 停止媒体并将其重设为从头播放。 返回表示当前 Object 的 String。 (继承自 Object。) 表8.3 MediaElement 类的一些重要的事件
名称 BufferingProgressChanged CurrentStateChanged DownloadProgressChanged LogReady MediaEnded 说明 当 BufferingProgress 属性更改时发生。 当 CurrentState 属性的值更改时发生。 在 DownloadProgress 属性更改后发生。 当日志准备就绪时发生。 当 MediaElement 不再播放音 频或视频时发生。 MediaFailed MediaOpened 在存在与媒体 Source 关联的错误时发生。 当媒体流已被验证和打开且已 读取文件头时发生。