DisplayingUserControlManager.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows.Controls;
  7. namespace OOO_WriteAndClear.MVP.Views.DisplayingUserControlManager
  8. {
  9. /// <summary>
  10. /// Класс инкапсулирующий логику демонстрации UserControl в ContentControl
  11. /// </summary>
  12. public sealed class DisplayingUserControlManager
  13. {
  14. /// <summary>
  15. /// Конструктор для создания без первоначальной установки UC
  16. /// </summary>
  17. /// <param name="hostPlace">ContentControl для размещения UC</param>
  18. public DisplayingUserControlManager(ContentControl hostPlace)
  19. {
  20. _hostPlace = hostPlace;
  21. }
  22. /// <summary>
  23. /// Конструктор для создания с первоначальной установкой UC
  24. /// </summary>
  25. /// <param name="hostPlace">ContentControl для размещения UC</param>
  26. /// <param name="userControl">UserControl для первоначального размещения</param>
  27. public DisplayingUserControlManager(ContentControl hostPlace, UserControl userControl)
  28. {
  29. _hostPlace = hostPlace;
  30. DisplayingUserControl = userControl;
  31. }
  32. /// <summary>
  33. /// Возвращает или устанавливает текущий UserControl
  34. /// </summary>
  35. public UserControl? DisplayingUserControl
  36. {
  37. get => _hostPlace.Content as UserControl;
  38. set => _hostPlace.Content = value;
  39. }
  40. /// <summary>
  41. /// Тип отображающегося в данный момент UserControl
  42. /// </summary>
  43. public Type? DisplayingUserControlType => _hostPlace.Content?.GetType();
  44. private readonly ContentControl _hostPlace;
  45. }
  46. }