EmptyDataTemplateSelector.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. 
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8. using System.Windows.Controls;
  9. using FWindSoft.Wpf;
  10. namespace FWindSoft.Wpf.Selector
  11. {
  12. public interface IEmptyTemplateChecker
  13. {
  14. bool IsEmpty(object item);
  15. }
  16. public class DefaultEmptyTemplateChecker : IEmptyTemplateChecker
  17. {
  18. public bool IsEmpty(object item)
  19. {
  20. return item == null;
  21. }
  22. }
  23. /// <summary>
  24. /// 空模板选择类
  25. /// </summary>
  26. public class EmptyDataTemplateSelector: DataTemplateSelector
  27. {
  28. public EmptyDataTemplateSelector()
  29. {
  30. Checker = new DefaultEmptyTemplateChecker();
  31. }
  32. public DataTemplate Empty { get; set; }
  33. public DataTemplate Use { get; set; }
  34. public IEmptyTemplateChecker Checker { get; set; }
  35. public override DataTemplate SelectTemplate(object item, DependencyObject container)
  36. {
  37. if (Checker == null)
  38. return Empty;
  39. var isEmpty = Checker.IsEmpty(item);
  40. var dataTemplate = isEmpty ? Empty : Use;
  41. return dataTemplate;
  42. }
  43. }
  44. }