using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using FWindSoft.Wpf; namespace FWindSoft.Wpf.Selector { public interface IEmptyTemplateChecker { bool IsEmpty(object item); } public class DefaultEmptyTemplateChecker : IEmptyTemplateChecker { public bool IsEmpty(object item) { return item == null; } } /// /// 空模板选择类 /// public class EmptyDataTemplateSelector: DataTemplateSelector { public EmptyDataTemplateSelector() { Checker = new DefaultEmptyTemplateChecker(); } public DataTemplate Empty { get; set; } public DataTemplate Use { get; set; } public IEmptyTemplateChecker Checker { get; set; } public override DataTemplate SelectTemplate(object item, DependencyObject container) { if (Checker == null) return Empty; var isEmpty = Checker.IsEmpty(item); var dataTemplate = isEmpty ? Empty : Use; return dataTemplate; } } }