using System; using DispenserCommon.Events; using ReactiveUI; namespace DispenserUI.ViewModels; /// /// 可用于动态的切换页面是否显示的view model /// public abstract class DynamicViewModel : ViewModelBase { private bool _visible; protected DynamicViewModel(EventType type = EventType.PageChanged) { EventBus.AddEventHandler(type, WhenPageChanged); } /// /// 动态控制是否显示 /// public bool Visible { get => _visible; set { _visible = value; this.RaisePropertyChanged(); } } public virtual void WhenPageChanged(EventType type, Type data) { var me = GetType(); // 默认是当前是当前的data为当前ViewModel的类型 Visible = data == me; } }