Dundas在Silverlight中应用

本文介绍如何在Silverlight中使用Dundas Chart控件创建图表,并提供了具体的实现步骤与关键代码示例。
    前段时间学习了Dundas Chart控件的开发,大部分的功能已经学会了使用,也是基于项目中的需求。也许是由于项目中图形的要求很苛刻,原来在水晶报表中都通过不同的方法得以实现,现在也以同样的要求需要在Dundas中实现,还好Dundas的功能比较强大,几乎可以全部满足,毕竟还是存在一点瑕疵,没有哪个控件和工具是十全十美。由于Dundas控件在Ajax和Silverlight技术方面的突出特色,才使它略胜一筹。

  记得不久前自己抽空研究了一些它在Silverlight中的应用,当时对这部分的功能很好奇,自己就做了一个实例。当时存在了一些问题,图形也没有显示出来,由于工作忙,也忘记了去解决。最近有充足的时间,便想起原来这部分自己还没搞定,现在重新去搞定它。经过几个小时的战斗,总算图形显示了,其实绘图的方法和在asp.net中是相同的,主要明白在Silverlight应用的几个关键点就OK~

  下面介绍一下实现的步骤及关键点:

  首先,建立一个ASP.NET网站,解决方案名称:DundasSilverlight

  其次,在同一个工程里 新建项目->Silverlight 应用程序      默认解决方案名称:SilverlightApplication1  

   页面 Page.xaml 代码如下: 

 

ExpandedBlockStart.gif 代码
 1  < UserControl x:Class = " SilverlightApplication1.Page "
 2      xmlns = " http://schemas.microsoft.com/winfx/2006/xaml/presentation "  
 3      xmlns:x = " http://schemas.microsoft.com/winfx/2006/xaml "  
 4      xmlns:my = " clr-namespace:Dundas.Utilities.ChartControl;assembly=DundasChartSilverlightExtender "
 5      Width = " 600 "  Height = " 400 " >
 6       < Grid  Background = " White " >
 7           < StackPanel >
 8               < TextBlock Text = " 这是一个简单的例子. "  FontFamily = " Verdana "  FontSize = " 15 "  Padding = " 0,10,0,20 " ></ TextBlock >
 9               < Grid x:Name = " LayoutRoot "  Background = " White " >
10                   < Grid.ColumnDefinitions >
11                       < ColumnDefinition Width = " 600 " ></ ColumnDefinition >
12                       < ColumnDefinition Width = " 200 " ></ ColumnDefinition >
13                   </ Grid.ColumnDefinitions >
14                   < Grid.RowDefinitions >
15                       < RowDefinition Height = " * " ></ RowDefinition >
16                   </ Grid.RowDefinitions >
17                   < my:Chart x:Name = " Chart1 "  Grid.Column = " 0 "  Grid.Row = " 0 " >
18                   </ my:Chart >
19               </ Grid >
20           </ StackPanel >
21       </ Grid >
22  </ UserControl >
23 

 

    注意:头部要引入 xmlns:my="clr-namespace:Dundas.Utilities.ChartControl;assembly=DundasChartSilverlightExtender"

  SilverlightApplication1 应用程序中添加引用:DundasChartSilverlightExtender.dll

 

  页面 Page.xaml.cs 代码如下:

ExpandedBlockStart.gif 代码
 1  public  Page()
 2          {
 3              InitializeComponent();
 4              
 5               // Set Width and Height
 6              Chart1.Width  =   600 ;
 7              Chart1.Height  =   350 ;
 8              Chart1.AntiAliasing  =  Chart.AntiAlaisingMode.All;
 9 
10               // Clear Default
11              Chart1.ChartAreas.Clear();
12              Chart1.Series.Clear();
13              Chart1.Titles.Clear();
14              Chart1.Legends.Clear();
15 
16               // Create ChartArea Panel
17              ChartArea chartarea  =   new  ChartArea( " ChartArea1 " );
18              Chart1.ChartAreas.Add(chartarea);
19 
20               // Create Title
21              Title title  =   new  Title();
22              title.Name  =   " title1 " ;
23              title.Text  =   " 柱图例子 " ;
24              title.DockToChartArea  =   " ChartArea1 " ;
25              title.DockInsideChartArea  =   false ;
26              Chart1.Titles.Add(title);
27 
28               // Create Legend
29              Legend legend  =   new  Legend( " legend1 " );
30              legend.DockToChartArea  =   " ChartArea1 " ;
31              legend.DockInsideChartArea  =   false ;
32              Chart1.Legends.Add(legend);
33 
34              Chart1.Series.Add( " Series1 " );
35 
36              Chart1.Series[ 0 ].Legend  =   " legend1 " ;
37              
38               // Series Type
39              Chart1.Series[ 0 ].Type  =  Series.SeriesChartTypes.Column;
40              
41               // Add Data
42               for  ( double  t  =   1.0 ; t  <=   10 ; t  ++ )
43              {
44                   double  ch1  =  t  *   2 ;
45                  Chart1.Series[ 0 ].Points.AddXY(t, ch1);
46              }
47 
48              Chart1.Palette  =  Chart.ColorPalettes.Dundas;
49              Chart1.Series[ 0 ].LegendText  =   " Series1 " ;
50               // Dynamic Show Label
51               foreach  (Dundas.Utilities.ChartControl.DataPoint dp  in  Chart1.Series[ " Series1 " ].Points)
52              {
53                  dp.ToolTip  =   " X值 =  "   +  dp.XValue  +   " \nY值 =  "   +  dp.YValues[ 0 ];
54              }
55 
56               // Update Chart
57              Chart1.Update();
58          }

     注意:Chart1.Update(); //这句不能缺少,对图形更新显示

 

   在此就可以先运行一下 web 项目里的 Default.aspx 页面,ClientBin 文件里就会存在SilverlightApplication1.xap文件,不存在任何问题。

     最后,页面 Default.aspx 代码如下:

ExpandedBlockStart.gif 代码
 1  <% @ Page Language = " C# "  AutoEventWireup = " true "  CodeBehind = " Default.aspx.cs "  Inherits = " SilverlightApplication1.Web._Default "   %>
 2  <% @ Register Assembly = " System.Web.Silverlight "  Namespace = " System.Web.UI.SilverlightControls "     TagPrefix = " asp "   %>
 3 
 4  <! DOCTYPE html PUBLIC  " -//W3C//DTD XHTML 1.0 Transitional//EN "   " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
 5 
 6  < html xmlns = " http://www.w3.org/1999/xhtml "   >
 7  < head runat = " server " >
 8       < title ></ title >
 9  </ head >
10  < body >
11       < form id = " form1 "  runat = " server " >
12       < asp:ScriptManager ID = " ScriptManager1 "  runat = " server " >
13       </ asp:ScriptManager >
14       < div >
15           < div  style = " height:100%; " >
16               < asp:Silverlight ID = " Xaml2 "  runat = " server "  Source = " ~/ClientBin/SilverlightApplication1.xap "  MinimumVersion = " 2.0.31005.0 "  Width = " 100% "  Height = " 100% "   />
17           </ div >
18       </ div >
19       </ form >
20  </ body >
21  </ html >

  注意:<%@ Register Assembly="System.Web.Silverlight" Namespace="System.Web.UI.SilverlightControls"  TagPrefix="asp" %>

  

  最后关键点就是要在web.config文件里,找到<httpHandlers>节点,添加代码:

1  < httpHandlers >
2         < add verb = " POST,GET,HEAD "  path = " DundasHost.axd "  type = " Dundas.Utilities.DundasServer "  validate = " false "   />
3  </ httpHandlers >


   效果显示:


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值