* Initial plan * Implement ItemSpacing and LineSpacing support for ElasticWrapPanel Co-authored-by: rabbitism <14807942+rabbitism@users.noreply.github.com> * Add demo tab showcasing ItemSpacing and LineSpacing Co-authored-by: rabbitism <14807942+rabbitism@users.noreply.github.com> * Add additional test for ItemSpacing affecting line wrapping Co-authored-by: rabbitism <14807942+rabbitism@users.noreply.github.com> * feat: add bindings for IsFillHorizontal and IsFillVertical in ElasticWrapPanelDemo * Fix measure/arrange mismatch by tracking spacing in UVCollection Co-authored-by: rabbitism <14807942+rabbitism@users.noreply.github.com> * feat: add ItemSpacing & LineSpacing FormItems. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: rabbitism <14807942+rabbitism@users.noreply.github.com> Co-authored-by: Dong Bin <popmessiah@hotmail.com> Co-authored-by: Zhang Dian <54255897+zdpcdt@users.noreply.github.com>
56 lines
1.9 KiB
C#
56 lines
1.9 KiB
C#
using Avalonia.Controls.Primitives;
|
|
using Avalonia.Layout;
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
|
|
namespace Ursa.Demo.ViewModels;
|
|
|
|
public partial class ElasticWrapPanelDemoViewModel : ObservableObject
|
|
{
|
|
[ObservableProperty] private Orientation _selectedOrientation = Orientation.Horizontal;
|
|
[ObservableProperty] private ScrollBarVisibility _horizontalVisibility = ScrollBarVisibility.Auto;
|
|
[ObservableProperty] private ScrollBarVisibility _verticalVisibility = ScrollBarVisibility.Auto;
|
|
|
|
[ObservableProperty] private bool _isFillHorizontal;
|
|
[ObservableProperty] private bool _isFillVertical;
|
|
[ObservableProperty] private double _itemWidth = 40d;
|
|
[ObservableProperty] private double _itemHeight = 40d;
|
|
[ObservableProperty] private double _itemSpacing;
|
|
[ObservableProperty] private double _lineSpacing;
|
|
|
|
[ObservableProperty] private bool _autoWidth = true;
|
|
[ObservableProperty] private bool _autoHeight = true;
|
|
[ObservableProperty] private double _itemSelfWidth = double.NaN;
|
|
[ObservableProperty] private double _itemSelfHeight = double.NaN;
|
|
|
|
[ObservableProperty] private HorizontalAlignment _cmbHAlign = HorizontalAlignment.Left;
|
|
[ObservableProperty] private VerticalAlignment _cmbVAlign = VerticalAlignment.Stretch;
|
|
|
|
private double _oldItemSelfWidth;
|
|
private double _oldItemSelfHeight;
|
|
|
|
partial void OnAutoWidthChanged(bool value)
|
|
{
|
|
if (value)
|
|
{
|
|
_oldItemSelfWidth = ItemSelfWidth;
|
|
ItemSelfWidth = double.NaN;
|
|
}
|
|
else
|
|
{
|
|
ItemSelfWidth = _oldItemSelfWidth;
|
|
}
|
|
}
|
|
|
|
partial void OnAutoHeightChanged(bool value)
|
|
{
|
|
if (value)
|
|
{
|
|
_oldItemSelfHeight = ItemSelfHeight;
|
|
ItemSelfHeight = double.NaN;
|
|
}
|
|
else
|
|
{
|
|
ItemSelfHeight = _oldItemSelfHeight;
|
|
}
|
|
}
|
|
} |