VmTreeNavigationTest.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. 
  2. ///////////////////////////////////////////////////////////////////////////////
  3. //文件名称: VmTreeNavigationTest.cs
  4. //文件描述: VmTreeNavigationTest.cs
  5. //创 建 者: xls
  6. //创建日期: 2018/9/20 14:57:55
  7. //版 本 号:1.0.0.0
  8. ////////////////////////////////////////////////////////////////////////////////
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. using FWindSoft.Data;
  15. using FWindSoft.MVVM;
  16. using FWindSoft.Wpf;
  17. namespace Test.TreeNavigation
  18. {
  19. public class VmTreeNavigationTest : BaseViewModel
  20. {
  21. public VmTreeNavigationTest()
  22. {
  23. Init();
  24. }
  25. private void Init()
  26. {
  27. }
  28. public void Init(LoadParameter parameter)
  29. {
  30. Root = new TreeNavigation<ShowItem>();
  31. Root.CurrentItemChanged = ChangeSelectedItem;
  32. Root.Items.Add(new TreeNavigationItem<ShowItem>() { RefItem = new ShowItem() { Name = "名称1" } });
  33. Root.Items.Add(new TreeNavigationItem<ShowItem>() { RefItem = new ShowItem() { Name = "名称2" } });
  34. Root.Items.Add(new TreeNavigationItem<ShowItem>() { RefItem = new ShowItem() { Name = "名称3" } });
  35. Root.CurrentItem = Root.Items.FirstOrDefault();
  36. //Root.SetSelectedItem(Root.Items.FirstOrDefault());
  37. }
  38. #region 属性相关
  39. private TreeNavigation<ShowItem> m_Root;
  40. /// <summary>
  41. /// 根元素
  42. /// </summary>
  43. public TreeNavigation<ShowItem> Root
  44. {
  45. get { return this.m_Root; }
  46. set
  47. {
  48. this.m_Root = value;
  49. RaisePropertyChanged(nameof(this.Root));
  50. }
  51. }
  52. #endregion
  53. #region 命令相关
  54. /// <summary>
  55. /// 选择命令
  56. /// </summary>
  57. /// <param name="parameter"></param>
  58. [Command]
  59. public void SelectedCommand(object parameter)
  60. {
  61. }
  62. public bool CanSelectedCommand(object parameter)
  63. {
  64. return true;
  65. }
  66. #endregion
  67. private void ChangeSelectedItem(TreeNavigationItem<ShowItem> item)
  68. {
  69. if (item == null)
  70. return;
  71. if (item.Level > 2)
  72. return;
  73. var rootSelected = item.GetRefNavigation().CurrentItem;
  74. if (rootSelected != null)
  75. {
  76. item.Nodes.Clear();
  77. for (int i = 0; i < 10; i++)
  78. {
  79. var useData = new TreeNavigationItem<ShowItem>()
  80. {
  81. RefItem = new ShowItem() { Name = i.ToString() + item.RefItem.Name }
  82. };
  83. useData.IsChecked =i%2==0;
  84. item.Nodes.Add(useData);
  85. item.UpdateCheckedState();
  86. }
  87. }
  88. item.CurrentItem = item.Nodes.FirstOrDefault();
  89. }
  90. }
  91. public class ShowItem: BasePropertyChanged
  92. {
  93. private string m_Name;
  94. /// <summary>
  95. /// 名称
  96. /// </summary>
  97. public string Name
  98. {
  99. get { return this.m_Name; }
  100. set
  101. {
  102. this.m_Name = value;
  103. RaisePropertyChanged(nameof(this.Name));
  104. }
  105. }
  106. }
  107. }