feat: layout calculation.

This commit is contained in:
rabbitism
2024-02-21 22:48:11 +08:00
parent ab4b74d055
commit 6f4e11c7f5
6 changed files with 166 additions and 34 deletions

View File

@@ -5,6 +5,7 @@ using Avalonia.Controls.Presenters;
using Avalonia.Controls.Primitives;
using Avalonia.Controls.Templates;
using Avalonia.Layout;
using Avalonia.Markup.Xaml.Templates;
namespace Ursa.Controls;
@@ -59,6 +60,27 @@ public class ToolBar: HeaderedItemsControl
return new ContentPresenter();
}
protected override void ContainerForItemPreparedOverride(Control container, object? item, int index)
{
base.ContainerForItemPreparedOverride(container, item, index);
if (item is Control s)
{
container[!ToolBar.OverflowModeProperty] = s[!ToolBar.OverflowModeProperty];
}
else
{
if (container is ContentPresenter p)
{
p.ApplyTemplate();
var c = p.Child;
if (c != null)
{
container[!ToolBar.OverflowModeProperty] = c[!ToolBar.OverflowModeProperty];
}
}
}
}
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
{
base.OnApplyTemplate(e);