仅用30行代码可以实现一个计算器的功能吗?答案是,当然可以,因为我们有Spread控件。
Spread XAML控件(Spread WinRT和SpreadWPF-Silverlihgt)给我们带来了丰富的数据可视化和计算能力。可以创建自定义的计算器,动态交互式的仪表板程序,丰富多彩的报表等等。Spread所提供的API包括了Spread文档的完整对象模型,此外,还包括丰富的事件。Spread XAML控件包括功能强大的Spread设计器工具,通过设计器您可以创建和设计和Excel一模一样的用户界面,而且在设计时无须编写一行代码。您修改并保存电子表格模板之后,您可以运行时动态的加载这些模板到您的系统中。
下面将要展示的这个例子如何使用Spread设计器以及30行中有的代码来实现一个计算器,本文使用的是Spread WinRT控件。
首先,我们在VS2012中创建一个Window Store App工程:
然后将GcSpreadSheet控件添加到设计界面:
在控件上点击右键,选择Create a new document菜单项,然后会自动创建一个名为spreadsheet1.ssxaml文档,并自动设置到DocumentUri属性中:
然后,Spread设计器将会自动打开,然后您可以设计一个计算器的用户界面,最终效果如下:
接下来,我们添加CellClick事件,代码如下:
<UI:GcSpreadSheet x:Name="gcSpreadSheet1" Width="490" Height="730" DocumentUri="ms-appx:///Spread Documents/spreadsheet1.ssxml" CellClick="gcSpreadSheet1_CellClick"/>
void gcSpreadSheet1_CellClick(object sender, CellClickEventArgs e) { var sheet = this.gcSpreadSheet1.ActiveSheet; if (e.Column == 4 && e.Row == 7) //= { sheet[2, 1].Formula = ""; try { sheet[2, 1].Formula = sheet[1, 1].Text; } catch { sheet[2, 1].Text = "Invalid Formula!"; } } else if (e.Column == 1 && e.Row == 3) //C { sheet[1, 1].ResetText(); sheet[2, 1].ResetText(); sheet[2, 1].Formula = ""; } else if (e.Column == 3 && e.Row == 3) //BS { var txt = sheet[1, 1].Text; if (txt == string.Empty) return; sheet[1, 1].Text = txt.Substring(0, txt.Length - 1); } else if (e.Column > 0 && e.Column < 5 && e.Row > 3 && e.Row < 9) //digits and signs { sheet[1, 1].Text = sheet[1, 1].Text + sheet[e.Row, e.Column].Text; sheet[2, 1].ResetText(); sheet[2, 1].Formula = ""; } }
最终运行效果如下:
Spread WPF-Silverlight 产品介绍:
http://www.grapecity.com.cn/developer/Spwpf_overview.htm
源码下载: