TestTemplatedRoot.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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 ILayoutManager LayoutManager => PerspexLocator.Current.GetService<ILayoutManager>();
  33. public IRenderTarget RenderTarget => null;
  34. public IRenderQueueManager RenderQueueManager => null;
  35. public Point PointToClient(Point p) => p;
  36. public Point PointToScreen(Point p) => p;
  37. void INameScope.Register(string name, object element)
  38. {
  39. _nameScope.Register(name, element);
  40. }
  41. object INameScope.Find(string name)
  42. {
  43. return _nameScope.Find(name);
  44. }
  45. void INameScope.Unregister(string name)
  46. {
  47. _nameScope.Unregister(name);
  48. }
  49. }
  50. }