Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Реализация ChildViewModelBase

Читайте также:
  1. Возврат и реализация грузов перевозчиком
  2. Выбор и реализация решения
  3. ВЫБЫТИЕ (РЕАЛИЗАЦИЯ, ПЕРЕДАЧА, СПИСАНИЕ) ОСНОВНЫХ СРЕДСТВ
  4. Глава 2. ПРАВА ПОДОЗРЕВАЕМОГО И ИХ РЕАЛИЗАЦИЯ 1 страница
  5. Глава 2. ПРАВА ПОДОЗРЕВАЕМОГО И ИХ РЕАЛИЗАЦИЯ 2 страница
  6. Глава 2. ПРАВА ПОДОЗРЕВАЕМОГО И ИХ РЕАЛИЗАЦИЯ 3 страница
  7. Глава 2. ПРАВА ПОДОЗРЕВАЕМОГО И ИХ РЕАЛИЗАЦИЯ 4 страница

После реализации всех необходимых менеджеров можно перейти непосредственно к ChildViewModelBase. Этот класс будет предоставлять своим наследникам базовый функционал, позволяющий им работать как моделям представления дочернего окна.

В класс также добавлены некоторые члены, которые пригодятся при его использовании:

· Команда CloseCommand позволяет быстро привязывать элементы управления, закрывающие окно (такие, как кнопка «Отмена» или «Закрыть»);

· Метод Show сделан виртуальным, чтобы спецификации дочерних окон могли при необходимости переопределить его и произвести необходимую инициализацию при показе модели представления.

· Защищенный виртуальный метод OnClosing позволяет наследнику при помощи аргумента CancelEventArgs отменить закрытие окна. Это полезно, например, при необходимости отобразить диалог подтверждения закрытия, и не закрывать модель представления, если пользователь передумал.

· При помощи защищенного виртуального метода OnClosed классы, находящиеся ниже в иерархии наследования, могут обработать событие закрытия модели представления, например, очистив выделенные при создании или в методе Show ресурсы.

1: /// <summary>

2: /// Base class for View Model supporting closing

3: /// </summary>

4: public abstract class ChildViewModelBase: IChildViewModel

5: {

6: /// <summary>

7: /// Shows whether a View Model has been closed

8: /// </summary>

9: public virtual bool IsClosed { get; private set; }

10:

11: /// <summary>

12: /// View Model's title

13: /// </summary>

14: public virtual string Title

15: {

16: get { return "Безымянный"; }

17: }

18:

19: #region Commands

20:

21: private ICommand _closeCommand;

22:

23: /// <summary>

24: /// Command closing the tab

25: /// </summary>

26: public ICommand CloseCommand

27: {

28: get

29: {

30: return _closeCommand??

31: (_closeCommand = new ActionCommand(Close));

32: }

33: }

34:

35: #endregion

36:

37: #region Injected properties

38:

39: [Import]

40: public virtual ICloseableViewModelPresenter<IChildViewModel>

41: ViewModelPresenter { get; set; }

42:

43: #endregion

44:

45: /// <summary>

46: /// Event raised when the View Model is closed

47: /// </summary>

48: public event EventHandler Closed;

49:

50: /// <summary>

51: /// Closes View Model

52: /// </summary>

53: public void Close()

54: {

55: if (IsClosed)

56: {

57: return;

58: }

59:

60: var cancelEventArgs = new CancelEventArgs();

61: OnClosing(cancelEventArgs);

62:

63: if (cancelEventArgs.Cancel)

64: {

65: return;

66: }

67:

68: OnClosed();

69: }

70:

71: /// <summary>

72: /// Registers View Model to be shown

73: /// </summary>

74: public virtual void Show()

75: {

76: ViewModelPresenter.ShowViewModel(this);

77: }

78:

79: /// <summary>

80: /// Processes View Model closing attempt

81: /// </summary>

82: protected virtual void OnClosing(CancelEventArgs e)

83: {

84: //

85: }

86:

87: /// <summary>

88: /// Processes View Model close

89: /// </summary>

90: protected virtual void OnClosed()

91: {

92: IsClosed = true;

93:

94: if (Closed!= null)

95: {

96: Closed(this, EventArgs.Empty);

97: }

98: }

99: }


Дата добавления: 2015-08-13; просмотров: 40 | Нарушение авторских прав


Читайте в этой же книге: Отсутствие свойства No PathSegment.IsStroked | Краткие итоги | Задача 3. | Принцип инверсии зависимостей | Формы инверсии зависимостей | IoC контейнер | Сопоставление модели представления и представления | Реализация INotifyPropertyChanged средствами аспектно-ориентированного программирования | Краткие итоги | Понятие IChildViewModelManager |
<== предыдущая страница | следующая страница ==>
ChildViewManager| Реализация MessageViewModel

mybiblioteka.su - 2015-2024 год. (0.007 сек.)