- 浏览: 256851 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (293)
- web (1)
- [随笔分类]项目管理 (30)
- [随笔分类]WCF (14)
- 未分类 (1)
- [随笔分类]Linq (4)
- [随笔分类]C#基础 (24)
- 项目 (1)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (8)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (9)
- [随笔分类]Ubuntu (4)
- ASP.Net (1)
- [网站分类]2..NET新手区(用于发表不合适发表在首页的.NET技术文章,包括小经验、小技巧) (30)
- [随笔分类]ASP.NET MVC (20)
- [随笔分类]ASP.NET (3)
- [随笔分类]程序员厨房 (4)
- [随笔分类]英语学习 (28)
- [网站分类]4.其他技术区 (1)
- [随笔分类]Silverlight (12)
- [随笔分类]CodeSmith (8)
- [随笔分类]其他 (4)
- [随笔分类]Ruby (4)
- [发布至博客园首页] (34)
- [网站分类]其他技术区 (3)
- [随笔分类]Ruby on Rails (2)
- [网站分类].NET新手区 (33)
- [随笔分类]TDD (1)
- [随笔分类]不谈技术 (2)
- [网站分类]非技术区 (7)
最新评论
-
yicone:
You make a mistake when paste t ...
WCF步步为营(一):简单示例 -
jinweijie:
你好,这个实现不错,但是在用了scriptmanager以后就 ...
在服务器端保存ViewState
在Silverlight1.1中定义与调用Javascript事件的方法
我们在silverlight1.0 想调用javascript事件,直接在事件后写上函数名就可以,比如Loaded=SayHell, 但是在silverlight1.1 里是不行的,因为Silverlight1.1中一个XAML文件对应一个C#文件,和aspx与aspx.cs的对应关系一样,在XAML中可以定义一个Silverlight对象的事件代理,在对应的.xaml.cs文件中定义事件处理方法,在方法中可以操作XAML对象。但是如何为一个XAML对象定义一个JAVASCRIPT事件及事件处理方法呢?
在Silverlight1.1工程中一个Silverlight页面通常会有四个文件:html宿主文件及与之关联的html.js文件;XAML文件及与之对应的.xaml.cs文件。其中html宿主文件是一个普通的HTML文件用来作为Silverlight对象的容器,.html.js文件用会根据XAML文件来创建Silverlight对象显示在HTML文件中,XAML文件是一个基于XML格式的文件,用来定义Silverlight对象模型。
那么我们如何调用呢,以下就是示例:
1. 打开vs2008, 新建一个silverlight项目CallJavascript,默认生成如下文件
2. 在page.xaml的cavas下加入下面的代码
MouseLeftButtonDown="mCallJsTextBlockOnClicked" TextWrapping="Wrap"/>
我们为这个对象设置了事件代理MouseLeftButtonDown="mCallJsTextBlockOnClicked"
最后代码会使这个样子
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Loaded="Page_Loaded"
x:Class="CallJavascript.Page;assembly=ClientBin/CallJavascript.dll"
Width="640"
Height="480"
Background="White"
>
<TextBlock Width="314" Height="72" Canvas.Left="78" Canvas.Top="142" Text="Hello World"
MouseLeftButtonDown="mCallJsTextBlockOnClicked" TextWrapping="Wrap"/>
</Canvas>
3. 修改page.xaml.cs
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Browser;
namespace CallJavascript
{
[Scriptable]
public partial class Page : Canvas
{
[Scriptable]
public event EventHandler onTextBlockClicked;
public void Page_Loaded(object o, EventArgs e)
{
WebApplication.Current.RegisterScriptableObject("calljsObject", this);
// Required to initialize variables
InitializeComponent();
}
void mCallJsTextBlockOnClicked(object sender, MouseEventArgs e)
{
if (this.onTextBlockClicked != null)
{
onTextBlockClicked(sender, e);
}
}
}
}
引用 using System.Windows.Browser;
在C#文件中定义了Silverlight对象点击事件的处理方法,在这个方法里边会调用另一个事件,这个事件对象(onTextBlockClicked)有一个[Scriptable]标记,说明这个事件被定义为一个JS脚本事件,另外还要注意这个事件所在的类也要打上[Scriptable]标记,并且注册了一个脚本对象(在本例中是calljsObject)
4. 修改Testpage.html.js为
//contains calls to silverlight.js, example below loads Page.xaml
function createSilverlight()
{
Silverlight.createObjectEx({
source: "Page.xaml",
parentElement: document.getElementById("SilverlightControlHost"),
id: "SilverlightControl",
properties: {
width: "100%",
height: "100%",
version: "1.1",
enableHtmlAccess: "true"
},
events: {
onLoad:function(sender,args)
{
sender.Content.calljsObject.onTextBlockClicked = function (sender, args)
{alert("Hello World, I am Jack_wangds");};
}
}
});
// Give the keyboard focus to the Silverlight control by default
document.body.onload = function() {
var silverlightControl = document.getElementById('SilverlightControl');
if (silverlightControl)
silverlightControl.focus();
}
}
可以看到这是一个标准的createSilverlight方法,但是不同的是我在这个方法的events参数中增加了一个onLoad事件,在这个事件中我对onTextBlockClicked事件进行了初始化,从这一句初始化代码可以看到calljsObject就是刚才我在C#文件中注册的脚本对象。这个事件的处理函数也可以写在一个独立的JS文件中,只要在Silverlight宿主文件中将其引用就可以了。
总结,silverlight1.1 其优势就是我们用托管代码如C#来写代码,这就造成了我们直接使用javascript比较繁琐,还好不是很繁琐,如果你不想用这个新特性而喜欢手写javascript,那还是用1.0吧
发表评论
-
ASP.Net2.0使用Log4Net(一)
2007-11-24 15:40 1698第一种方法 在web.config中写配置文件 L ... -
ASP.Net2.0使用Log4Net(二)
2007-11-24 17:39 936(二)使用单独的配置文件,不放在web.config里 1. ... -
UML学习笔记
2007-11-25 09:55 720一、UML中的关系 依赖: 如果对象X发生变化,引起另一个对 ... -
NBear学习笔记(一)
2007-12-01 21:14 1136使用已有数据库。(之前先设计实体,再自动生成数据库,发现每次 ... -
NBear学习笔记(二)
2007-12-02 17:14 852本篇演示一对多关系,和两个表联合查询。 使用已有数据库,我们演 ... -
NBear学习笔记(三)
2007-12-04 22:11 891上一篇一对多的关系说的不是很清楚,这篇补充一下。 这篇我们创建 ... -
CSS使用总结
2007-12-12 21:10 671在分配ID和类名时,尽可能保持与表现形式无关,例如con ... -
ASP.NET2.0缓存技术
2007-12-12 23:33 726ASP.NET2.0提供如下缓存方式: Output Cac ... -
VS2008正式版创建silverlight项目失败的解决办法
2008-02-16 09:49 852安装microsoft express blend2 最新的试 ... -
vista英文版语言包安装
2008-02-17 21:35 1130最近,需要给老外截英文vista的一些图,但是系统装的是中文版 ... -
SilverLight显示中文字(一)
2008-02-18 14:42 972我们知道silverlight只提供了一下几种字体, 当我们 ... -
silverlight显示中文字(二):使用TextBlock+Downloader
2008-02-18 16:39 983(一),建立一个Silverlight1.0 site. ... -
SilverLight显示中文字(三) :使用Path和图形
2008-02-18 16:59 698使用path将文字转换为路径 用Direct select ... -
在线流程图制作工具
2008-02-26 22:32 12901. DrawAnywhere , 的在线流程图制作工具。 D ... -
VS2008下开发ASP.Net2.0 and AJAX1.0的程序
2008-03-05 13:57 1065为什么要在vs2008下开发ASP.Net2.0 and AJ ... -
VS2008开发Silverlight2程序:环境安装
2008-03-06 13:36 1689微软在MIX08大会,发布了Silverlight 2 Bet ... -
ASP.NET 2.0 XML 系列(1): XML介绍
2008-03-15 12:40 7361.1 简介 XML的一个强大之处在于它的强大可扩展性。XM ... -
ASP.NET 2.0 XML 系列(2): XML技术
2008-03-15 14:13 7121. DTD XML最强大之处是允许自定义标签,但是对 ... -
ASP.NET 2.0 XML 系列(3): .Net Framework中XML类
2008-03-15 14:52 626System.Xml包含了一些和XML文档的读写操作相关的类, ... -
ASP.NET 2.0 XML 系列(4):用XmlReader类介绍
2008-03-15 16:02 1356(本文摘自MSDN) XmlReader 类是一个提供 ...
相关推荐
与XML相比,JSON通常被认为更简洁且解析速度更快,因为它是为JavaScript设计的,所以在JavaScript环境中解析和生成JSON数据非常直观。JSON-RPC(Remote Procedure Call)是一种使用JSON进行远程调用的协议,允许...
2.4.1 调试页面中的javascript脚本(方法一) 22 .2.4.2 调试页面中的javascript脚本(方法二) 23 2.4.3 调试非嵌入式javascript脚本文件 23 2.4.4 调试嵌入式javascript脚本资源文件 24 2.4.5 高效率调试的...
2.4.1 调试页面中的javascript脚本(方法一) 22 .2.4.2 调试页面中的javascript脚本(方法二) 23 2.4.3 调试非嵌入式javascript脚本文件 23 2.4.4 调试嵌入式javascript脚本资源文件 24 2.4.5 高效率调试的...
2.4.3 事件如何与事件处理程序连接 2.5 Web项目 2.5.1 基于项目的开发 2.5.2 创建Web项目 2.5.3 迁移旧版Visual Studio创建的网站 2.6 Visual Studio调试 2.6.1 单步调试 2.6.2 变量监视 2.6.3 ...
2.4.3 事件如何与事件处理程序连接 46 2.5 Web项目 47 2.5.1 基于项目的开发 47 2.5.2 创建Web项目 48 2.5.3 迁移旧版Visual Studio创建的网站 49 2.6 Visual Studio调试 51 2.6.1 单步调试 52 2.6.2 ...
目前市场业务中在产品以及其他项目的认证和检测方面存在诸多不便,用户需要实地考察并频繁与检测单位沟通,填写繁琐的纸质检测报告、当面送递样品,对于检测环节中存在的问题难以及时交互并处理。市场上相应的检测...
- 使用XML或Flex布局构建界面,并通过JavaScript与原生代码交互。 **结构图:** - 由JS执行引擎、UI框架和原生插件组成。 **ReactNative** **简介:** - React Native是Facebook开发的一个框架,允许使用React...