MuchinfoPagerCommands.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. /**
  2. *
  3. * @date 2014-10-24
  4. *
  5. * @author 邓尹平
  6. *
  7. * @par 成员列表类 说明
  8. * 主要负责管理成员 提供搜索\排序和操作的方法
  9. *
  10. * @par 版权声明
  11. * 深圳市多元世纪信息技术有限公司 版权所有
  12. *
  13. * @see 使用此类时参照一些其他类可以写在这里
  14. *
  15. * @todo 该类有待完成的任务 一条条列出 完成一条删除一条
  16. *
  17. * @bug 该类已知的Bug一条条列出 完成一条删除一条
  18. *
  19. */
  20. using System;
  21. using System.Windows.Input;
  22. namespace Muchinfo.DataPager.Base
  23. {
  24. public class MuchinfoPagerCommands
  25. {
  26. private enum CommandId
  27. {
  28. MoveToFirstPage,
  29. MoveToLastPage,
  30. MoveToNextPage,
  31. MoveToPage,
  32. MoveToPreviousPage
  33. }
  34. #region Fields
  35. private static readonly int CommandsCount = Enum.GetNames(typeof(MuchinfoPagerCommands.CommandId)).Length;
  36. private static readonly RoutedUICommand[] InternalCommands = new RoutedUICommand[MuchinfoPagerCommands.CommandsCount];
  37. #endregion
  38. #region Commands
  39. public static ICommand MoveToFirstPage
  40. {
  41. get
  42. {
  43. return MuchinfoPagerCommands.EnsureCommand(MuchinfoPagerCommands.CommandId.MoveToFirstPage);
  44. }
  45. }
  46. public static ICommand MoveToLastPage
  47. {
  48. get
  49. {
  50. return MuchinfoPagerCommands.EnsureCommand(MuchinfoPagerCommands.CommandId.MoveToLastPage);
  51. }
  52. }
  53. public static ICommand MoveToNextPage
  54. {
  55. get
  56. {
  57. return MuchinfoPagerCommands.EnsureCommand(MuchinfoPagerCommands.CommandId.MoveToNextPage);
  58. }
  59. }
  60. public static ICommand MoveToPage
  61. {
  62. get
  63. {
  64. return MuchinfoPagerCommands.EnsureCommand(MuchinfoPagerCommands.CommandId.MoveToPage);
  65. }
  66. }
  67. public static ICommand MoveToPreviousPage
  68. {
  69. get
  70. {
  71. return MuchinfoPagerCommands.EnsureCommand(MuchinfoPagerCommands.CommandId.MoveToPreviousPage);
  72. }
  73. }
  74. #endregion
  75. #region Methods
  76. private static RoutedUICommand EnsureCommand(CommandId commandId)
  77. {
  78. lock (MuchinfoPagerCommands.InternalCommands.SyncRoot)
  79. {
  80. if (MuchinfoPagerCommands.InternalCommands[(int)commandId] == null)
  81. {
  82. var command = new RoutedUICommand(MuchinfoPagerCommands.GetUIText(commandId), commandId.ToString(), typeof(MuchinfoPagerCommands));
  83. MuchinfoPagerCommands.InternalCommands[(int)commandId] = command;
  84. }
  85. }
  86. return MuchinfoPagerCommands.InternalCommands[(int)commandId];
  87. }
  88. private static string GetUIText(CommandId commandId)
  89. {
  90. switch (commandId)
  91. {
  92. case MuchinfoPagerCommands.CommandId.MoveToFirstPage:
  93. return "Move to first page";
  94. case MuchinfoPagerCommands.CommandId.MoveToLastPage:
  95. return "Move to last page";
  96. case MuchinfoPagerCommands.CommandId.MoveToNextPage:
  97. return "Move to next page";
  98. case MuchinfoPagerCommands.CommandId.MoveToPage:
  99. return "Move to page";
  100. case MuchinfoPagerCommands.CommandId.MoveToPreviousPage:
  101. return "Move to previous page";
  102. default:
  103. return string.Empty;
  104. }
  105. }
  106. #endregion
  107. }
  108. }