TimeSpanControl.xaml.cs 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. using MuchInfo.Chart.Data.EnumTypes;
  2. using MuchInfo.Chart.Data.Models;
  3. using MuchInfo.Chart.WPF.Helpers;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Windows.Controls;
  7. using System.Linq;
  8. namespace MuchInfo.Chart.WPF.Controls.QuickTimeSpan
  9. {
  10. /// <summary>
  11. /// TimeSpanControl.xaml 的交互逻辑
  12. /// </summary>
  13. public partial class TimeSpanPicker : UserControl
  14. {
  15. #region Constructors
  16. public TimeSpanPicker(Chart chart)
  17. {
  18. this.InitializeComponent();
  19. InitializeButtons(chart);
  20. if (null != chart) UpdateButtonStatus(chart.CycleType);
  21. }
  22. #endregion Constructors
  23. #region Delegates
  24. public delegate void TimeSpanChangedEventHandler(CycleType cycleType);
  25. #endregion Delegates
  26. #region Events
  27. public event TimeSpanPicker.TimeSpanChangedEventHandler ChangeTimeSpan;
  28. #endregion Events
  29. #region Methods
  30. #region Internal Methods
  31. /// <summary>
  32. /// Adds the custom button.
  33. /// </summary>
  34. /// <param name="text">The text.</param>
  35. /// <param name="timeSpan">The time span.</param>
  36. internal void AddCustomButton(string text, TimeSpan timeSpan)
  37. {
  38. this.stackMain.Children.Add(new TimeSpanButton(text, CycleType.Custom, this));
  39. }
  40. /// <summary>
  41. /// 添加指标周期。
  42. /// </summary>
  43. /// <param name="text">显示名称</param>
  44. /// <param name="cycleType">周期</param>
  45. /// <param name="index">插入的索引</param>
  46. internal void InsertCycleTypeBtton(string text, CycleType cycleType, int index)
  47. {
  48. this.stackMain.Children.Insert(index, new TimeSpanButton(text, cycleType, this));
  49. }
  50. /// <summary>
  51. /// 选择显示区间后执行
  52. /// </summary>
  53. /// <param name="cycleType">Type of the cycle.</param>
  54. internal void UpdateCyleType(CycleType cycleType)
  55. {
  56. var handler = this.ChangeTimeSpan;
  57. if (handler != null)
  58. {
  59. handler(cycleType);
  60. UpdateButtonStatus(cycleType);
  61. }
  62. }
  63. /// <summary>
  64. /// Updates the button status.
  65. /// </summary>
  66. /// <param name="cycleType">Type of the cycle.</param>
  67. private void UpdateButtonStatus(CycleType cycleType)
  68. {
  69. if (this.stackMain == null || this.stackMain.Children == null || this.stackMain.Children.Count == 0) return;
  70. foreach (var button in stackMain.Children)
  71. {
  72. var timeSpanButton = button as TimeSpanButton;
  73. if (timeSpanButton == null) continue;
  74. if (timeSpanButton.CycleType == cycleType)
  75. {
  76. timeSpanButton.Opacity = 1.0;
  77. }
  78. else
  79. {
  80. timeSpanButton.Opacity = 0.5;
  81. }
  82. }
  83. }
  84. #endregion Internal Methods
  85. #region Private Methods
  86. /// <summary>
  87. /// Initializes the buttons.
  88. /// </summary>
  89. private void InitializeButtons(Chart chart)
  90. {
  91. this.stackMain.Children.Clear();
  92. if (chart.CycleItems == null || chart.CycleItems.Count() == 0)
  93. {
  94. //chart.CycleItems = new List<CycleModel>();
  95. //chart.CycleItems.Add(new CycleModel() { Cycle = CycleType.TimeSharing });
  96. //chart.CycleItems.Add(new CycleModel() { Cycle = CycleType.Minute });
  97. //chart.CycleItems.Add(new CycleModel() { Cycle = CycleType.Minute5 });
  98. //chart.CycleItems.Add(new CycleModel() { Cycle = CycleType.Minute15 });
  99. //chart.CycleItems.Add(new CycleModel() { Cycle = CycleType.Minute30 });
  100. //chart.CycleItems.Add(new CycleModel() { Cycle = CycleType.Minute60 });
  101. //chart.CycleItems.Add(new CycleModel() { Cycle = CycleType.Minute120 });
  102. //chart.CycleItems.Add(new CycleModel() { Cycle = CycleType.Minute240 });
  103. //chart.CycleItems.Add(new CycleModel() { Cycle = CycleType.Day });
  104. //chart.CycleItems.Add(new CycleModel() { Cycle = CycleType.Week });
  105. //chart.CycleItems.Add(new CycleModel() { Cycle = CycleType.Month });
  106. }
  107. //foreach (var item in chart.CycleItems)
  108. //{
  109. // switch (item.Cycle)
  110. // {
  111. // case CycleType.TimeSharing:
  112. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_TimeSharingLine);
  113. // break;
  114. // case CycleType.Minute:
  115. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_OneMinute);
  116. // break;
  117. // case CycleType.Minute3:
  118. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_ThreeMinute);
  119. // break;
  120. // case CycleType.Minute5:
  121. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_FiveMinute);
  122. // break;
  123. // case CycleType.Minute10:
  124. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_TenMinute);
  125. // break;
  126. // case CycleType.Minute15:
  127. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_FifteenMinute);
  128. // break;
  129. // case CycleType.Minute30:
  130. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_ThirtyMinute);
  131. // break;
  132. // case CycleType.Minute60:
  133. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_SixtyMinute);
  134. // break;
  135. // case CycleType.Minute90:
  136. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_NinetyMinute);
  137. // break;
  138. // case CycleType.Minute120:
  139. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_Minute120);
  140. // break;
  141. // case CycleType.Minute180:
  142. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_Minute180);
  143. // break;
  144. // case CycleType.Minute240:
  145. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_Minute240);
  146. // break;
  147. // case CycleType.Hour:
  148. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_OneHour);
  149. // break;
  150. // case CycleType.Day:
  151. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_OneDay);
  152. // break;
  153. // case CycleType.Week:
  154. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_OneWeek);
  155. // break;
  156. // case CycleType.Month:
  157. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_OneMonth);
  158. // break;
  159. // case CycleType.Quarter:
  160. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_OneQuarter);
  161. // break;
  162. // case CycleType.Year:
  163. // item.Btn_Text = LanguageManager.FindResource(LanguageConst.TimeSpanControl_OneYear);
  164. // break;
  165. // case CycleType.Custom:
  166. // item.Btn_Text = Math.Floor(chart.ChartTimeSpan.TotalMinutes).ToString();
  167. // break;
  168. // default:
  169. // item.Btn_Text = Math.Floor(chart.ChartTimeSpan.TotalMinutes).ToString();
  170. // break;
  171. // }
  172. //if (!string.IsNullOrEmpty(item.Btn_Text))
  173. //{
  174. // this.stackMain.Children.Add(new TimeSpanButton(item.Btn_Text, item.Cycle, this));
  175. //}
  176. //}
  177. }
  178. /// <summary>
  179. /// Updates the buttons.
  180. /// </summary>
  181. internal void UpdateButtons(Chart chart)
  182. {
  183. this.stackMain.Children.Clear();
  184. InitializeButtons(chart);
  185. }
  186. #endregion Private Methods
  187. private void Border_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
  188. {
  189. }
  190. #endregion Methods
  191. }
  192. }