当前位置: 首页 > news >正文

一步一步学Silverlight 2系列(7):全屏模式支持

概述

Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章带您快速进入Silverlight 2开发。

本文为系列文章第七篇,介绍如何在Silverlight 2中使用全屏模式。

实现全屏模式

全屏模式有时候是非常有用的,在Silverlight中,提供了很好的支持。实现起来也非常的简单,其实只有一行代码,编写一个简单的XAML。

<Canvas Background="#46461F">
    <Button x:Name="toggleButton" Background="Red" Width="200" Height="80"
            Canvas.Top="80" Canvas.Left="150" Content="Toggle Full Screen"
            FontSize="20" Click="toggleButton_Click"/>
    <Image x:Name="image" Source="smile_6.png" 
           Canvas.Top="100" Canvas.Left="40"></Image>
</Canvas>

引入命名空间

using System.Windows.Interop;

在按钮单击事件中添加实现代码。

private void toggleButton_Click(object sender, RoutedEventArgs e)
{
    Content contentObject = Application.Current.Host.Content;
    contentObject.IsFullScreen = !contentObject.IsFullScreen;
}

获取当前的Silverlight插件“Content”对象,并设置IsFullScreen属性。运行后单击按钮将会变为全屏模式,再次单击按钮(或者按Esc键)返回普通模式。

TerryLee_Silverlight2_0039

捕获相关事件

有时候,我们需要在全屏模式和普通模式之间切换时,添加一个其它的代码,这时可以使用事件FullScreenChanged。

public Page()
{
    InitializeComponent();
    Application.Current.Host.Content.FullScreenChanged += new EventHandler(Content_FullScreenChanged);
}

实现事件处理

private void Content_FullScreenChanged(object sender, EventArgs e)
{
    Content contentObject = Application.Current.Host.Content;
    if (contentObject.IsFullScreen)
    {
        toggleButton.Background = new SolidColorBrush(Colors.Green);
        toggleButton.Content = "Full Screen Mode";
    }
    else
    {
        toggleButton.Background = new SolidColorBrush(Colors.Red);
        toggleButton.Content = "Normal Mode";
    }
}

在普通模式和全屏模式之间切换时,改变按钮的背景色和文字。运行后点击按钮:

TerryLee_Silverlight2_0040

切换为普通模式:

TerryLee_Silverlight2_0041

完整的代码如下:

public partial class Page : UserControl
{
    public Page()
    {
        InitializeComponent();
        Application.Current.Host.Content.FullScreenChanged += new EventHandler(Content_FullScreenChanged);
    }

    private void toggleButton_Click(object sender, RoutedEventArgs e)
    {
        Content contentObject = Application.Current.Host.Content;
        contentObject.IsFullScreen = !contentObject.IsFullScreen;
    }

    private void Content_FullScreenChanged(object sender, EventArgs e)
    {
        Content contentObject = Application.Current.Host.Content;
        if (contentObject.IsFullScreen)
        {
            toggleButton.Background = new SolidColorBrush(Colors.Green);
            toggleButton.Content = "Full Screen Mode";
        }
        else
        {
            toggleButton.Background = new SolidColorBrush(Colors.Red);
            toggleButton.Content = "Normal Mode";
        }
    }
}

结束语

本文简单介绍了Silverlight 2中对于全屏模式的支持,你可以从这里下载本文示例代码。

下一篇:一步一步学Silverlight 2系列(8):使用样式封装控件观感

相关文章:

  • Windows Server 2008 的十四大最新功能特性技术总结
  • 如何制作已编译的HTML帮助文件(即CHM帮助文件)
  • JavaScript 正则表达式 验证网址
  • ASP.NET 2.0(C#) - Themes(主题)
  • 书法家
  • 我的第一份工作
  • 如何定制列表项编辑页面
  • Linux Iptables上中文man文档的详细介绍
  • 旅游经济学1
  • SMART原则的误区
  • 游戏式管理未来的管理方式
  • 第一帖~纪念~
  • 妻子-情人-红颜知己
  • 成功不是忽悠
  • 在SharePoint Designer 2007中使用交叉列表查询的数据视图
  • 2017年终总结、随想
  • Android Volley源码解析
  • HTML5新特性总结
  • JSDuck 与 AngularJS 融合技巧
  • Linux CTF 逆向入门
  • Redis的resp协议
  • redis学习笔记(三):列表、集合、有序集合
  • Selenium实战教程系列(二)---元素定位
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 理解在java “”i=i++;”所发生的事情
  • 每天一个设计模式之命令模式
  • 排序算法学习笔记
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 数据结构java版之冒泡排序及优化
  • 小程序01:wepy框架整合iview webapp UI
  • 译自由幺半群
  • 在weex里面使用chart图表
  • 阿里云服务器如何修改远程端口?
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #Linux(权限管理)
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (10)STL算法之搜索(二) 二分查找
  • (11)MATLAB PCA+SVM 人脸识别
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (5)STL算法之复制
  • (9)目标检测_SSD的原理
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (四)鸿鹄云架构一服务注册中心
  • .gitignore文件—git忽略文件
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .net core 依赖注入的基本用发
  • .NET 使用配置文件
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比