`

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的技术取得更好的表现力。
分享到:
评论

相关推荐

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

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

    解说wpf与wpf/e

    微软才推出.NET 3.0不久,相关工具尚未到位,WPF(Windows Presentation Foundation)还是个新鲜而陌生的技术名词,没想到这一会儿又冒出了一个WPF/E(Windows Presentation Foundation/Everywhere)。到底WPF和WPF/...

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

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

    WPF/SilverLight 代码

    C# WPF/SilverLight 咱用WPF/SilverLight做效果也绝对不比Flash/Flex差,呵呵。

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

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

    WPF/MVVM 快速开始指南

    WPF/MVVM 快速开始指南

    C#客户端/WPF/WINFORM通过HttpClient访问API

    C#客户端/WPF/WINFORM通过HttpClient访问API

    WPF/SILVERLIGHT图片放大缩小拖动

    WPF/SILVERLIGHT图片放大缩小拖动

    WPF/SliverLight开发网游的源代码

    这是一个WPF/SliverLight开发网游的源代码,非本人原创,建议大家不要用于商业

    WPF/Silverlight动画及游戏系列教程(WPF21-26

    WPF/Silverlight动画及游戏系列教程(WPF 21-26

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

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

    WPF/Silverlight动画及游戏系列教程及代码(WORD)

    WPF/Silverlight动画及游戏系列教程,从一点一点的讲,包括人物如何跑动,A+寻路算法,魔法技能,故事章节,附带源代码,是学习Silverlight的好资料,也可以体验SL超强的UI

    WPF/UWP文字跑马灯

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

    WPF//俄罗斯方块游戏

    这是WPF的俄罗斯方块,实现了基本功能,对学习很有帮助

    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嵌入到...

    wpf /treeview数据库绑定

    treeview控件的数据库绑定程序 item是checkbox

    wpf/silverlight读取shapefile文件类

    wpf、silverlight读取shapefile文件类,懂的下,不懂的绕行,免浪费积分

    WPF/Silverlight UserControl继承示例

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

Global site tag (gtag.js) - Google Analytics