TestTemplatedRoot.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // Copyright (c) The Perspex Project. All rights reserved.
  2. // Licensed under the MIT license. See licence.md file in the project root for full license information.
  3. using System;
  4. using Perspex.Controls;
  5. using Perspex.Controls.Presenters;
  6. using Perspex.Controls.Templates;
  7. using Perspex.Layout;
  8. using Perspex.Platform;
  9. using Perspex.Rendering;
  10. using Perspex.Styling;
  11. namespace Perspex.UnitTests
  12. {
  13. public class TestTemplatedRoot : ContentControl, ILayoutRoot, INameScope, IRenderRoot, IStyleRoot
  14. {
  15. private readonly NameScope _nameScope = new NameScope();
  16. public TestTemplatedRoot()
  17. {
  18. Template = new FuncControlTemplate<TestTemplatedRoot>(x => new ContentPresenter());
  19. }
  20. public event EventHandler<NameScopeEventArgs> Registered
  21. {
  22. add { _nameScope.Registered += value; }
  23. remove { _nameScope.Registered -= value; }
  24. }
  25. public event EventHandler<NameScopeEventArgs> Unregistered
  26. {
  27. add { _nameScope.Unregistered += value; }
  28. remove { _nameScope.Unregistered -= value; }
  29. }
  30. public Size ClientSize => new Size(100, 100);
  31. public Size MaxClientSize => Size.Infinity;
  32. public double LayoutScaling => 1;
  33. public ILayoutManager LayoutManager => PerspexLocator.Current.GetService<ILayoutManager>();
  34. public IRenderTarget RenderTarget => null;
  35. public IRenderQueueManager RenderQueueManager => null;
  36. public Point PointToClient(Point p) => p;
  37. public Point PointToScreen(Point p) => p;
  38. void INameScope.Register(string name, object element)
  39. {
  40. _nameScope.Register(name, element);
  41. }
  42. object INameScope.Find(string name)
  43. {
  44. return _nameScope.Find(name);
  45. }
  46. void INameScope.Unregister(string name)
  47. {
  48. _nameScope.Unregister(name);
  49. }
  50. }
  51. }