`

WPF/E is Ajax

阅读更多
做一个从数据库读取数据然后在页面展示出来的矩阵图谱。
 
对应的WebForm1.xaml的XAML文件。
 
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Loaded="javascript:onLoaded" Name="MainCanvas">
<Canvas Name="CanvasRisk" Background="#f8f8f8ff" Width="600" Height="500" >
<TextBlock FontSize="20"
FontWeight="Bold"
Canvas.Top="20" Canvas.Left="20" Text="test">
<TextBlock.Foreground>
<LinearGradientBrush>
<GradientStop Color="SlateBlue" Offset="0.0" />
<GradientStop Color="Black" Offset="1.0" />
</LinearGradientBrush>
</TextBlock.Foreground>
</TextBlock>
<TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="353" Text="0"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="320" Text="1"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="290" Text="2"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="260" Text="3"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="230" Text="4"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="200" Text="5"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="170" Text="6"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="140" Text="7"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="110" Text="8"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="80" Text="9"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="80" Canvas.Top="353" Text="1"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="110" Canvas.Top="353" Text="2"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="140" Canvas.Top="353" Text="3"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="170" Canvas.Top="353" Text="4"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="200" Canvas.Top="353" Text="5"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="230" Canvas.Top="353" Text="6"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="260" Canvas.Top="353" Text="7"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="290" Canvas.Top="353" Text="8"></TextBlock>
<TextBlock FontSize="12" Canvas.Left="320" Canvas.Top="353" Text="9"></TextBlock>
<Ellipse Height="10" Width="10" Canvas.Left="60" Canvas.Top="130"
Stroke="Red" StrokeThickness="1" Fill="Black"/>
<!-- Create Rectange(300*300), top:50 left:50-->
<Rectangle Stroke="#FF8E8E8E" StrokeThickness="2" RadiusX="2" RadiusY="2" Height="300" Width="300" Canvas.Left="50" Canvas.Top="50" Opacity="0.5">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,1" EndPoint="1,0">
<GradientStop Name="gradientStop1" Color="Green" Offset="0.0"/>
<GradientStop Name="gradientStop2" Color="Yellow" Offset="0.5" />
<GradientStop Name="gradientStop3" Color="Red" Offset="1.0"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
</Canvas>
</Canvas>


上面的代码准备好我们工作的画布。在顶部节点Loaded="javascript:onLoaded"中,代表在开始自动加载js脚本,这个脚本中我们要动态的获取应该在矩阵上点的点,而这些点是从数据库中读取的数值。上面一连串的TextBlock是在横纵坐标上点的值(1~9)。再下面的Rectangle试我们画的一个300*300的矩阵。坐标都将落在这个矩阵图上面,GradientStop有3个渐变过程,让我们直观的看到这些点落在什么颜色上,红色就为危险区域了。

下面我们利用XMLHTTP与服务器上的Webservice通讯,WebService的程序从略。

//获得XML方式一 XMLDOM
function initGetRisk1()
{
xmldoc =new ActiveXObject("Microsoft.XMLDOM");
xmldoc.async = false;
xmldoc.load("WebServiceRisk.asmx/GetRiskInfo?YearID=2");
alert(xmldoc.xml);
analyseXML(xmldoc);
}


//获得XML方式二 XMLHTTP
function initGetRisk2()
{
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
var xmldoc =new ActiveXObject("Microsoft.XMLDOM");
var serverURL="WebServiceRisk.asmx/GetRiskInfo?YearID=2";
xmlhttp.Open("GET",serverURL, false);
xmlhttp.SetRequestHeader ("Content-Type","text/xml; charset=utf-8");
xmlhttp.SetRequestHeader ("SOAPAction","http://tempuri.org/WPFEJSApplication1");
xmlhttp.Send();
var result = xmlhttp.status;
if(result==200)
{
   
xmldoc.loadXML(xmlhttp.responseText);
//do some paint here
}
xmlhttp = null;
return xmldoc;
}


除了SOAP外,事实上也可以利用JSON来传递数据。

var wpfe;
var CanvasRisk;
function onLoaded(sender, args)
{
wpfe = document.getElementById("wpfeControl1");
CanvasRisk = sender.findName("CanvasRisk");
BuildRiskPoint();
}
function BuildRiskPoint()
{
xmldoc = initGetRisk2();
//alert(xmldoc.xml);
nodeList=xmldoc.documentElement.getElementsByTagName("Table");
for (i=0;i<nodeList.length;i++)
{
var analyseID;
var riskTypeName;
var riskTypeDesc;
var frequency;
var effect;
var measure;
analyseID = nodeList(i).selectSingleNode("AnalyseID").text;
riskTypeName = nodeList(i).selectSingleNode("RiskTypeName").text;
riskTypeDesc = nodeList(i).selectSingleNode("RiskTypeDesc").text;
frequency = parseInt(nodeList(i).selectSingleNode("Frequency").text);
effect = parseInt(nodeList(i).selectSingleNode("Effect").text);
measure = nodeList(i).selectSingleNode("Measure").text;
var x = getXPoint(frequency);
var y = getYPoint(effect);
var riskPoint = "<Ellipse Height='10' Width='10' Canvas.Left='" + x + "' Canvas.Top='" + y + "' Stroke='Red' StrokeThickness='1' Fill='Black'/>";
//var riskPoint = "<Ellipse Height='10' Width='10' Canvas.Left='130' Canvas.Top='130' Stroke='Red' StrokeThickness='1' Fill='Black'/>";
var newOddPage = wpfe.createFromXaml(riskPoint);
CanvasRisk.children.add(newOddPage);
}
}
function getXPoint(x)
{
return (x*30 + 50)
}
function getYPoint(y)
{
return (y*30 + 50)
}



小结:WPE 事实上更象一种改良的Ajax,它提供了比HTML更好的表现元素,并可利用AJAX的技术取得更好的表现力。
分享到:
评论

相关推荐

    解说wpf与wpf/e

    例如,WPF/E可以与ASP.NET AJAX、C#、VB等.NET框架中的其他技术协同工作,创建更高效、更易于维护的解决方案。 与Adobe Flash的比较,WPF/E经常被称为“Flash杀手”。两者在提供互动内容方面有相似之处,但WPF/E的...

    C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial 前38节)

    C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial)目录 本系列教程目录如下: C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(一)让物体动起来① C#开发WPF/Silverlight动画及游戏系列教程...

    开发新技术展望系列课程(1):WPF/E (PPT)

    讲师:徐晓卓 大家现在一定已经对新发布的.NET Framework 3.0有了一定的了解。...我们将在本课程中介绍WPF/E,一项将WPF和ASP.NET Ajax结合起来的技术,让我们在网页中也能用WPF带来震撼的视觉效果。

    C#开发WPF/Silverlight动画及游戏系列源码(Part2)

    C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial) 的源代码 第一部分源码:WPFGameTutorial_PartI.rar(1-20节) 第二部分源码:WPFGameTutorial_PartII.rar (21-26节) 第三部分源码:WPFGameTutorial_Part...

    wpf /treeview数据库绑定

    在Windows Presentation Foundation (WPF) 中,`TreeView` 控件是一种强大的工具,用于展示层次结构的数据。本示例着重讲解如何将数据库中的数据绑定到 `TreeView`,并结合 `CheckBox` 元素来实现交互功能。`...

    WPF/Silverlight自定义高性能水纹波浪位图效果

    WPF/Silverlight自定义高性能位图效果的例子。 用的是一个外部二进制文件,直接是有显卡来渲染位图效果,所以性能非常高,效果是图片的波浪水纹化。 一般wpf自带的位图效果 数量有限,而且性能很差,不适合大量使用...

    Eallies OA: 综合应用WPF/WCF/WF/LINQ实现企业级软件-Dev-wow源码

    Eallies OA 使用说明 1、本程序在Windows 2003、SQL Server 2005、Visual Studio 2008环境下测试通过。...1、综合采用最新的WCF/WPF/WF/LINQ技术。 2、优秀的系统架构。 3、完整的后台代码自动生成器。

    WPF/UWP文字跑马灯

    首先代码是网上下的,但是发现使用UserControl做的,没法绑定。改写成立CustomControl。既然可以绑定,那就引起另外的问题,可以容纳文本是停止动画,不能容纳下继续动画,除非AlwaysRun(启动后就开始动画,不会停...

    WPF/Silverlight 开关按钮 开源DLL

    在本文中,我们将深入探讨WPF(Windows Presentation Foundation)和Silverlight中的开关按钮控件,以及如何使用开源DLL实现这一功能。"Toggle Switch Control Library"是开发者社区共享的一个资源,它提供了一个...

    visifire for wpf/sl

    visifire图表控件,支持wpf和silverlight Visifire.Charts.dll Visifire.Commons.dll 另,Visifire服务器端技术,能与ASP,ASP Net, SharePoint,PHP, JSP, ColdFusion, Python, Ruby或者HTML一起使用。

    asf /avi/ai/wpf 专用解码器

    asf /avi/ai/wpf 专用解码器 asf /avi/ai/wpf 专用解码器 asf /avi/ai/wpf 专用解码器 asf /avi/ai/wpf 专用解码器 asf /avi/ai/wpf 专用解码器 asf /avi/ai/wpf 专用解码器 asf /avi/ai/wpf 专用解码器 asf /avi/ai...

    WPF/Silverlight超绚统计图控件

    Visifire数据可视化的图表控件—— 支持Silverlight 和 WPF。它可以用于WPF和Silverlight应用程序 visifire图表效果。使用API,可创建移动,Web和桌面应用程序的图表。Visifire 能够作为一个Silverlight App嵌入到...

    C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial 50节全)

    《C#开发WPF/Silverlight动画及游戏系列教程》是一个全面涵盖WPF(Windows Presentation Foundation)和Silverlight技术的游戏开发教程,共计50节课。本教程深入浅出地介绍了如何利用C#语言来构建丰富的用户界面和...

    WPF/Silverlight UserControl继承示例

    演示如何在WPF和Silverlight中实现UserControl的继承。 在实际工程项目中,XAML程序并不推荐使用继承的方式实现控件,并且由于设计层和逻辑层的分离,导致直接继承UserControl子类并不容易,需要在理解UserControl...

    WPF/SILVERLIGHT图片放大缩小拖动

    在WPF(Windows Presentation Foundation)和Silverlight这两个微软的UI框架中,图片的放大、缩小以及拖动功能是常见的需求,特别是在开发地图应用或者图像查看器时。这些功能的实现涉及到了图形绘制、用户交互以及...

    Infragistics.NetAdvantage.for.WPF/Windows from .2010.Vol.2

    网上下载的 Infragistics.NetAdvantage.for.WPF.2010.Vol.2 Infragistics.NetAdvantage.for./Windows from .2010.Vol.2 Infragistics.NetAdvantage.for Windows from .2010.Vol.1 整理了一下 有的能用 有的不能用在...

    WPF/C#桌面安装程序插件InstallerProjects

    vs2019安装部署包插件,InstallerProjects,最新版本的插件,生成安装包必须插件,使用非常简单。

    专用 asf /avi/ai/wpf 解码器

    专用 asf /avi/ai/wpf 解码器 专用 asf /avi/ai/wpf 解码器 专用 asf /avi/ai/wpf 解码器 专用 asf /avi/ai/wpf 解码器 专用 asf /avi/ai/wpf 解码器 专用 asf /avi/ai/wpf 解码器 专用 asf /avi/ai/wpf 解码器 专用...

    C#/WPF/web 手写识别程序

    非常不错的C#/WPF 手写识别程序,可以在桌面运行,也可以用在web上是用,类似百度的那种手写输入,胜过汉王手写输入,经过一番努力已经开发成成品了,上传过来的只是个半成品,给大家一个参考,有需要的可以联系我,...

    WPF/C#实现音乐播放,歌词解析,歌词滚动,歌词秀(源码源项目)

    本项目基于C#语言和WPF技术,实现音乐的简单播放,以及最主要是实现歌词文件的解析,歌词动画的展示,歌词的滚动效果,歌词的高亮显示。具体效果具体代码请下载详细阅读,不懂之处请加QQ919784826,。 本资源是个人的...

Global site tag (gtag.js) - Google Analytics