42 lines
1.0 KiB
C#
42 lines
1.0 KiB
C#
using Avalonia.Controls;
|
|
using Avalonia.Controls.Templates;
|
|
|
|
namespace Toolkit.UI.Controls.Avalonia;
|
|
|
|
public class TemplateListBox :
|
|
ListBox
|
|
{
|
|
protected override Type StyleKeyOverride =>
|
|
typeof(ListBox);
|
|
|
|
protected override Control CreateContainerForItemOverride(object? item, int index, object? recycleKey)
|
|
{
|
|
if (recycleKey is IDataTemplate itemContainerTemplate)
|
|
{
|
|
if (itemContainerTemplate.Build(item) is ListBoxItem container)
|
|
{
|
|
return container;
|
|
}
|
|
}
|
|
|
|
return new ListBoxItem();
|
|
}
|
|
|
|
protected override bool NeedsContainerOverride(object? item, int index, out object? recycleKey)
|
|
{
|
|
if (item is ListBoxItem)
|
|
{
|
|
recycleKey = null;
|
|
return false;
|
|
}
|
|
|
|
if (this.FindDataTemplate(item, ItemTemplate) is IDataTemplate itemContainerTemplate)
|
|
{
|
|
recycleKey = itemContainerTemplate;
|
|
return true;
|
|
}
|
|
|
|
recycleKey = DefaultRecycleKey;
|
|
return true;
|
|
}
|
|
} |