modds C# 拖放编程示例股票图表 (第二部分)





5.00/5 (7投票s)
拖放编程
引言
在 modds C# 拖放编程示例程序 (第一部分) 中,我描述了一个示例命令行程序。在本第二部分中,我将向您展示如何创建一个股票图表程序。
在此示例中,我创建了一个程序,该程序将首先从 YAHOO! 历史价格中检索股票价格,然后显示股票价格图表。
项目需求
- modds C# 设计器 (来自 www.modds.org)
- Microsoft Visual Studio (用于从附件文件创建 DLL)
- Windows 7 或更高版本
- .NET Framework 4.5.2 或更高版本
下载附件文件并使用 Microsoft Visual Studio 编译它们,以创建 WPF 图表控件和市场数据 API。
我找不到一个好的免费 WPF 财务图表控件。因此,我将 Microsoft WinForm Chart 封装到了 WPF 控件中。这将作为第三方 WPF 财务图表控件。
在附件文件中,有一个名为“MarketDataView.xaml”的文件。这是我使用上面创建的 WPF 图表控件为股票图表程序设计的 WPF 用户界面文本文件。在 .NET 中,此 XAML 文件可以在运行时创建用户控件。用户控件符号名称、开始日期、结束日期和搜索按钮字段通过对象属性名称绑定到后端对象。
在附件示例文件中,我还包含了一个 MarketData
项目。它只有一个类 YahooMarketData
,该类从 Yahoo! 检索市场数据。这将作为第三方市场数据 API。
您可以使用 modds Designer 打开股票图表项目 (在附件文件 modds/StockChart/Application.moddc 中) 来查看正在运行的程序。
设计股票图表程序
创建 WPF 应用程序
- 启动 modds Designer
- 创建窗口应用程序项目
- 点击 文件 -> 新建项目。
- 从“新建项目”对话框
- 选择“窗口应用程序”
- 给定项目名称“Stock Chart”
- 浏览项目路径
- 按确定
将 .NET DLL 和 WFP 视图文件添加到项目中
- 右键单击“解决方案”->“Stock Chart”->“引用”->“ProgramDLL”并选择“添加项”。
- 添加 (下载附件文件) ChartControl.dll
- 添加 (下载附件文件) MarketData.dll
- 右键单击“解决方案”->“Stock Chart”->“SchemaView”->MainWindow.xaml 并选择“删除”以删除 MainWindows.xaml。
- 右键单击“解决方案”->“Stock Chart”->“SchemaView”并选择“添加项”
- 添加 (下载附件文件) “MarketDataView.xaml”
设计应用程序
- 双击“解决方案”->“Stock Chart”->“Schema”->MainWindow.xaml 打开。
- 删除 View、Message、ButtonCommand 和 HelloWorld 元素。
- 将“解决方案”->“Stock Chart”->“SchemaView”->MarketDataView.xaml 拖入 (命名为 View)
现在程序应该可以运行了,但它还没有做任何事情。要进行测试,请右键单击“解决方案”->“Stock Chart”并选择“调试”。
在 .NET DLL 工具箱面板中,单击“添加 DLL”按钮 (左上角),然后在“文件打开”面板中,添加 (下载附件文件) “MarketData.dll”。
将以下内容拖到设计板上
- 控件工具箱 -> WPF 控件 -> Command (命名为
SearchCommand
) - .NET DLL 工具箱 -> MarketData.dll -> Class -> YahooMarketData -> YahooDailyMarketData
- .NET DLL 工具箱 ->
CSharpCommonLibrary
-> Primitive Type -> String (命名为Symbol
) - .NET DLL 工具箱 ->
CSharpCommonLibrary
-> Class -> DateTime (命名为StartDate
) - .NET DLL 工具箱 ->
CSharpCommonLibrary
-> Class -> DateTime (命名为EndDate
) - .NET DLL 工具箱 ->
CSharpCommonLibrary
-> Primitive Type -> Double (命名为Open
并设置为Array
) - .NET DLL 工具箱 ->
CSharpCommonLibrary
-> Primitive Type -> Double (命名为High
并设置为Array
) - .NET DLL 工具箱 ->
CSharpCommonLibrary
-> Primitive Type -> Double (命名为Low
并设置为Array
) - .NET DLL 工具箱 ->
CSharpCommonLibrary
-> Primitive Type -> Double (命名为Last
并设置为Array
) - .NET DLL 工具箱 ->
CSharpCommonLibrary
-> Primitive Type -> Double (命名为AdjClose
并设置为Array
) - .NET DLL 工具箱 ->
CSharpCommonLibrary
-> Primitive Type -> Double (命名为Volume
并设置为Array
) - .NET DLL 工具箱 ->
CSharpCommonLibrary
-> Class -> DateTime (命名为Date
并设置为Array
)
拖动连接线,如下图所示
:
股票价格 WPF 控件需要一组价格数组 (日期、开盘价、最高价、最低价和收盘价)。要创建 StockPrice
,我们需要将这些股票价格分组到一个对象中。
在“属性”面板中,单击刷新按钮 (左上角)。
将以下内容拖到设计板上
- 控件工具箱 -> modds 标准控件 -> 工具箱 -> Group Data (将数字数据设置为 5,并将第一个输入设置为触发器连接器)。
- Properties ->
DataObject
->Date
- Properties ->
DataObject
->Open
- Properties ->
DataObject
->High
- Properties ->
DataObject
->Low
- Properties ->
DataObject
->Last
- .NET DLL 工具箱 ->
CSharpCommonLibrary
-> Class -> Object (命名为StockPrice
并设置为Array
)
拖动连接线,如下图所示
在此,控件:Date
、Open
、High
、Low
和 Last
是复制的控件。它们用于将大的复杂图形分解成更小的图形,以实现功能。它们也可以用于避免线条交叉。在运行时,所有复制的控件都会被忽略,并且连接到复制控件的任何连接都会被“重新连接”到原始控件。
在 Group Data 控件中,我们将 Date
设置为触发器连接器,因为在 YahooDailyMarketData
函数中,日期是最后触发的值。因此,当日期准备就绪时,这意味着所有 Open
、High
、Low
和 Last
数据也已准备就绪。
初始化 StartDate
和 EndDate
。
将以下内容拖到设计板上
- 控件工具箱 -> modds 通用控件 -> Module -> Start Trigger
- .NET DLL 工具箱 ->
CSharpCommonLibrary
-> Class -> DateTime ->get_Now()
- .NET DLL 工具箱 ->
CSharpCommonLibrary
-> Class -> DateTime ->AddMonths(Int32)
(将月份设置为 -3)
拖动连接线,如下图所示
现在股票图表程序已完成。右键单击“解决方案”->“Stock Chart”并选择“调试”来启动运行项目。输入股票符号、开始日期、结束日期,然后按“搜索”。