using System; using System.ComponentModel; using Caliburn.Services; using Caliburn.Views; namespace Caliburn.Presenters { public interface IHostedPresenter { object CurrentView { get; set; } } public abstract class HostedPresenter : IHostedPresenter, INotifyPropertyChanged { private object _currentView; public virtual object CurrentView { get { return _currentView; } set { _currentView = value; OnPropertyChanged("CurrentView"); } } public virtual void ChangeView(string viewKey) { DI.Resolve().ChangeView(this, viewKey); } public virtual void ChangeView(Type viewType) { DI.Resolve().ChangeView(this, viewType); } #region INotifyPropertyChanged Members public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } #endregion } }