ElementFactory.cs 748 B

123456789101112131415161718192021222324252627
  1. using Avalonia.Controls.Templates;
  2. namespace Avalonia.Controls
  3. {
  4. public abstract class ElementFactory : IElementFactory
  5. {
  6. public IControl Build(object data)
  7. {
  8. return GetElementCore(new ElementFactoryGetArgs { Data = data });
  9. }
  10. public IControl GetElement(ElementFactoryGetArgs args)
  11. {
  12. return GetElementCore(args);
  13. }
  14. public bool Match(object data) => true;
  15. public void RecycleElement(ElementFactoryRecycleArgs args)
  16. {
  17. RecycleElementCore(args);
  18. }
  19. protected abstract IControl GetElementCore(ElementFactoryGetArgs args);
  20. protected abstract void RecycleElementCore(ElementFactoryRecycleArgs args);
  21. }
  22. }