1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- namespace Caliburn.Micro.Core {
- /// <summary>
- /// A base class for various implementations of <see cref="IConductor"/> that maintain an active item.
- /// </summary>
- /// <typeparam name="T">The type that is being conducted.</typeparam>
- public abstract class ConductorBaseWithActiveItem<T> : ConductorBase<T>, IConductActiveItem where T: class {
- T activeItem;
- /// <summary>
- /// The currently active item.
- /// </summary>
- public T ActiveItem {
- get { return activeItem; }
- set { ActivateItem(value); }
- }
- /// <summary>
- /// The currently active item.
- /// </summary>
- /// <value></value>
- object IHaveActiveItem.ActiveItem {
- get { return ActiveItem; }
- set { ActiveItem = (T)value; }
- }
- /// <summary>
- /// Changes the active item.
- /// </summary>
- /// <param name="newItem">The new item to activate.</param>
- /// <param name="closePrevious">Indicates whether or not to close the previous active item.</param>
- protected virtual void ChangeActiveItem(T newItem, bool closePrevious) {
- ScreenExtensions.TryDeactivate(activeItem, closePrevious);
- newItem = EnsureItem(newItem);
- if(IsActive)
- ScreenExtensions.TryActivate(newItem);
- activeItem = newItem;
- NotifyOfPropertyChange("ActiveItem");
- OnActivationProcessed(activeItem, true);
- }
- }
- }
|