SysMenuItem.cs 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. using System.Windows.Input;
  2. using GalaSoft.MvvmLight;
  3. using Muchinfo.MTPClient.Data.Enums;
  4. using System.Collections.Generic;
  5. using Muchinfo.MTPClient.Data.Model;
  6. using System;
  7. using System.Linq;
  8. namespace Muchinfo.MTPClient.Data
  9. {
  10. /// <summary>
  11. /// 菜单项类
  12. /// </summary>
  13. public class SysMenuItem : ViewModelBase
  14. {
  15. #region Constructors
  16. public SysMenuItem()
  17. {
  18. Children = new List<SysMenuItem>();
  19. }
  20. /// <summary>
  21. /// 无执行命令菜单
  22. /// </summary>
  23. /// <param name="title">The title.</param>
  24. public SysMenuItem(string title)
  25. : this(title, MenuCommandType.None)
  26. {
  27. //菜单项默认不能checkable,实例化后按需设置成true
  28. IsCheckable = false;
  29. }
  30. /// <summary>
  31. /// 有执行命令菜单
  32. /// </summary>
  33. /// <param name="title">The title.</param>
  34. /// <param name="commandType">Type of the command.</param>
  35. public SysMenuItem(string title, MenuCommandType commandType)
  36. {
  37. this.Title = title;
  38. this.SysCommandType = commandType;
  39. IsEnabled = true;
  40. SysMenuType = SysMenuType.Enum;
  41. FuncMenuCode = commandType.ToString();
  42. }
  43. /// <summary>
  44. /// 有执行命令菜单
  45. /// </summary>
  46. /// <param name="title">The title.</param>
  47. /// <param name="commandType">Type of the command.</param>
  48. public SysMenuItem( MenuCommandType commandType)
  49. {
  50. this.SysCommandType = commandType;
  51. IsEnabled = true;
  52. SysMenuType = SysMenuType.Enum;
  53. this.ResourceCode = eSystemMenuValue.CreateInstance().menu.Where(x => x.Key == commandType).Select(x => x.Value).FirstOrDefault();
  54. }
  55. public SysMenuItem(string title, string code)
  56. {
  57. this.Title = title;
  58. this.Code = code;
  59. IsEnabled = true;
  60. SysMenuType = SysMenuType.News;
  61. }
  62. #endregion Constructors
  63. #region Properties
  64. #region Public Properties
  65. /// <summary>
  66. /// 子菜单
  67. /// </summary>
  68. public List<SysMenuItem> Children
  69. {
  70. get;
  71. set;
  72. }
  73. /// <summary>
  74. /// 父菜单
  75. /// </summary>
  76. public SysMenuItem ParentItem { get; set; }
  77. /// <summary>
  78. /// 菜单快捷键显示文本
  79. /// </summary>
  80. public string InputGestureText
  81. {
  82. get;
  83. set;
  84. }
  85. /// <summary>
  86. /// 是否能check
  87. /// </summary>
  88. public bool IsCheckable
  89. {
  90. get;
  91. set;
  92. }
  93. private bool _isChecked;
  94. /// <summary>
  95. /// 是否check
  96. /// </summary>
  97. public bool IsChecked
  98. {
  99. get { return _isChecked; }
  100. set { Set(() => IsChecked, ref _isChecked, value); }
  101. }
  102. private bool _isVisible ;
  103. /// <summary>
  104. /// 是否显示菜单
  105. /// </summary>
  106. public bool IsVisible
  107. {
  108. get { return _isVisible; }
  109. set { Set(() => IsVisible, ref _isVisible, value); }
  110. }
  111. private bool _isEnabled;
  112. /// <summary>
  113. /// Gets or sets a value indicating whether this instance is enabled.
  114. /// </summary>
  115. public bool IsEnabled
  116. {
  117. get { return _isEnabled; }
  118. set { Set(() => IsEnabled, ref _isEnabled, value); }
  119. }
  120. private bool _isSelected;
  121. /// <summary>
  122. /// 是否选中
  123. /// </summary>
  124. public bool IsSelected
  125. {
  126. get { return _isSelected; }
  127. set { Set(() => IsSelected, ref _isSelected, value); }
  128. }
  129. private bool _isExpanded = false;
  130. /// <summary>
  131. /// 菜单是否展开
  132. /// </summary>
  133. public bool IsExpanded
  134. {
  135. get { return _isExpanded; }
  136. set { Set(() => IsExpanded, ref _isExpanded, value); }
  137. }
  138. /// <summary>
  139. /// 菜单项命令类型
  140. /// </summary>
  141. public MenuCommandType SysCommandType
  142. {
  143. get;
  144. set;
  145. }
  146. /// <summary>
  147. /// 是否是枚举类型命令
  148. /// </summary>
  149. public SysMenuType SysMenuType { get; set; }
  150. /// <summary>
  151. /// 菜单项命令代码
  152. /// </summary>
  153. public string Code
  154. {
  155. get;
  156. set;
  157. }
  158. private string _title;
  159. /// <summary>
  160. /// 菜单项标题
  161. /// </summary>
  162. public string Title
  163. {
  164. get { return _title; }
  165. set { Set(() => Title, ref _title, value); }
  166. }
  167. /// <summary>
  168. /// CommandType = CustomQuote时,存储交易所所代码,市场代码
  169. /// </summary>
  170. public string QuoteParameters
  171. {
  172. get;
  173. set;
  174. }
  175. /// <summary>
  176. /// 父菜单标题
  177. /// </summary>
  178. public string ParentTitle
  179. {
  180. get;
  181. set;
  182. }
  183. private string _resourceCode;
  184. public string ResourceCode
  185. {
  186. get { return _resourceCode; }
  187. set { _resourceCode = value; }
  188. }
  189. /// <summary>
  190. /// 是否为显示对话框
  191. /// </summary>
  192. public bool IsDialog { get; set; }
  193. /// <summary>
  194. /// 显示在查询框的查询对象
  195. /// </summary>
  196. public object View { get; set; }
  197. #endregion Public Properties
  198. #endregion Properties
  199. #region 服务端配置的转换对象
  200. /// <summary>
  201. /// 功能菜单id
  202. /// </summary>
  203. public int FuncMenuId { get; set; }
  204. /// <summary>
  205. /// 功能菜单代码
  206. /// </summary>
  207. public string FuncMenuCode { get; set; }
  208. /// <summary>
  209. /// 父级菜单代码
  210. /// </summary>
  211. public string ParentFuncMenuCode { get; set; }
  212. /// <summary>
  213. /// 操作功能,标识菜单具有哪些复选框
  214. /// </summary>
  215. public int OperateFunc { get; set; }
  216. /// <summary>
  217. /// 操作功能值,标识哪些复选框被选中
  218. /// </summary>
  219. public int OperateFuncVal { get; set; }
  220. /// <summary>
  221. /// 客户端类型 0:交易客户端 1:管理客户端s
  222. /// </summary>
  223. public int RoleType { get; set; }
  224. /// <summary>
  225. /// 序号用于排序菜单的位置
  226. /// </summary>
  227. public int FuncNo { get; set; }
  228. #endregion Other
  229. #region 菜单使用
  230. /// <summary>
  231. /// 对话框 对象
  232. /// </summary>
  233. public Type ViewType { get; set; }
  234. /// <summary>
  235. /// 参数
  236. /// </summary>
  237. public List<object> Params { get; set; }
  238. /// <summary>
  239. /// 是否是模式窗口
  240. /// </summary>
  241. public bool IsModalDialog { get; set; }
  242. #endregion
  243. /// <summary>
  244. /// 菜單命令
  245. /// </summary>
  246. public ICommand Command { get; set; }
  247. #region 暂时存放市场信息
  248. //todo:交易所市场使用绑定
  249. public MarketsInfoModel GoodsGroup { get; set; }
  250. /// <summary>
  251. /// 菜单排序ID
  252. /// </summary>
  253. public int SortId { get; set; }
  254. #endregion
  255. }
  256. public enum SysMenuType
  257. {
  258. /// <summary>
  259. /// 枚举类型命令
  260. /// </summary>
  261. Enum,
  262. /// <summary>
  263. /// 新闻类型命令
  264. /// </summary>
  265. News
  266. }
  267. }