using System; using System.Windows; using System.Windows.Controls; using GalaSoft.MvvmLight; using GalaSoft.MvvmLight.Command; using GalaSoft.MvvmLight.Messaging; using HandyControlDemo.Data; using HandyControlDemo.UserControl; namespace HandyControlDemo.ViewModel { public class MainViewModel : ViewModelBase { #region 字段 /// /// 内容标题 /// private object _contentTitle; /// /// 左侧主内容 /// private object _leftMainContent; /// /// 主内容 /// private object _mainContent; /// /// 子内容 /// private object _subContent; #endregion public MainViewModel() { LeftMainContent = ControlLocator.Instance.LeftMainContent; MainContent = ControlLocator.Instance.MainContent; Messenger.Default.Register(this, MessageToken.LoadGrowlDemoCtl, obj => SubContent = ControlLocator.Instance.GrowlDemoCtl); Messenger.Default.Register(this, MessageToken.LoadLoadingDemoCtl, obj => SubContent = ControlLocator.Instance.LoadingDemoCtl); Messenger.Default.Register(this, MessageToken.LoadImageBrowserDemoCtl, obj => SubContent = ControlLocator.Instance.ImageBrowserDemoCtl); Messenger.Default.Register(this, MessageToken.LoadColorPickerDemoCtl, obj => SubContent = ControlLocator.Instance.ColorPickerDemoCtl); Messenger.Default.Register(this, MessageToken.LoadCarouselDemoCtl, obj => SubContent = ControlLocator.Instance.CarouselDemoCtl); Messenger.Default.Register(this, MessageToken.LoadCompareSliderDemoCtl, obj => SubContent = ControlLocator.Instance.CompareSliderDemoCtl); Messenger.Default.Register(this, MessageToken.LoadTimeBarDemoCtl, obj => SubContent = ControlLocator.Instance.TimeBarDemoCtl); Messenger.Default.Register(this, MessageToken.LoadPaginationDemoCtl, obj => SubContent = ControlLocator.Instance.PaginationDemoCtl); Messenger.Default.Register(this, MessageToken.LoadExpanderDemoCtl, obj => SubContent = ControlLocator.Instance.ExpanderDemoCtl); Messenger.Default.Register(this, MessageToken.LoadProgressBarDemoCtl, obj => SubContent = ControlLocator.Instance.ProgressBarDemoCtl); Messenger.Default.Register(this, MessageToken.LoadAnimationPathDemoCtl, obj => SubContent = ControlLocator.Instance.AnimationPathDemoCtl); Messenger.Default.Register(this, MessageToken.LoadButtonDemoCtl, obj => SubContent = ControlLocator.Instance.ButtonDemoCtl); Messenger.Default.Register(this, MessageToken.LoadToggleButtonDemoCtl, obj => SubContent = ControlLocator.Instance.ToggleButtonDemoCtl); } #region 属性 /// /// 左侧主内容 /// public object LeftMainContent { get => _leftMainContent; set => Set(ref _leftMainContent, value); } /// /// 主内容 /// public object MainContent { get => _mainContent; set => Set(ref _mainContent, value); } /// /// 子内容 /// public object SubContent { get => _subContent; set => Set(ref _subContent, value); } /// /// 内容标题 /// public object ContentTitle { get => _contentTitle; set => Set(ref _contentTitle, value); } #endregion #region 命令 /// /// 切换例子命令 /// public RelayCommand> SwitchDemoCmd => new Lazy>>(() => new RelayCommand>(SwitchDemo)).Value; #endregion #region 方法 /// /// 切换例子 /// private void SwitchDemo(RoutedPropertyChangedEventArgs e) { if (e.NewValue is TreeViewItem item) { if (item.Tag is string tag) { ContentTitle = item.Header; Messenger.Default.Send(null, tag); } else { ContentTitle = null; SubContent = null; } } } #endregion } }