/////////////////////////////////////////////////////////////////////////////// //文件名称: VmTreeNavigationTest.cs //文件描述: VmTreeNavigationTest.cs //创 建 者: xls //创建日期: 2018/9/20 14:57:55 //版 本 号:1.0.0.0 //////////////////////////////////////////////////////////////////////////////// using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using FWindSoft.Data; using FWindSoft.MVVM; using FWindSoft.Wpf; namespace Test.TreeNavigation { public class VmTreeNavigationTest : BaseViewModel { public VmTreeNavigationTest() { Init(); } private void Init() { } public void Init(LoadParameter parameter) { Root = new TreeNavigation(); Root.CurrentItemChanged = ChangeSelectedItem; Root.Items.Add(new TreeNavigationItem() { RefItem = new ShowItem() { Name = "名称1" } }); Root.Items.Add(new TreeNavigationItem() { RefItem = new ShowItem() { Name = "名称2" } }); Root.Items.Add(new TreeNavigationItem() { RefItem = new ShowItem() { Name = "名称3" } }); Root.CurrentItem = Root.Items.FirstOrDefault(); //Root.SetSelectedItem(Root.Items.FirstOrDefault()); } #region 属性相关 private TreeNavigation m_Root; /// /// 根元素 /// public TreeNavigation Root { get { return this.m_Root; } set { this.m_Root = value; RaisePropertyChanged(nameof(this.Root)); } } #endregion #region 命令相关 /// /// 选择命令 /// /// [Command] public void SelectedCommand(object parameter) { } public bool CanSelectedCommand(object parameter) { return true; } #endregion private void ChangeSelectedItem(TreeNavigationItem item) { if (item == null) return; if (item.Level > 2) return; var rootSelected = item.GetRefNavigation().CurrentItem; if (rootSelected != null) { item.Nodes.Clear(); for (int i = 0; i < 10; i++) { var useData = new TreeNavigationItem() { RefItem = new ShowItem() { Name = i.ToString() + item.RefItem.Name } }; useData.IsChecked =i%2==0; item.Nodes.Add(useData); item.UpdateCheckedState(); } } item.CurrentItem = item.Nodes.FirstOrDefault(); } } public class ShowItem: BasePropertyChanged { private string m_Name; /// /// 名称 /// public string Name { get { return this.m_Name; } set { this.m_Name = value; RaisePropertyChanged(nameof(this.Name)); } } } }