|
@@ -3,17 +3,23 @@ using System.Collections;
|
|
|
using System.Collections.Generic;
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
using System.Linq;
|
|
|
using Avalonia.Controls;
|
|
using Avalonia.Controls;
|
|
|
|
|
+using Avalonia.Controls.Primitives;
|
|
|
|
|
+using Avalonia.Controls.Repeaters;
|
|
|
using Avalonia.Markup.Xaml;
|
|
using Avalonia.Markup.Xaml;
|
|
|
|
|
|
|
|
namespace ControlCatalog.Pages
|
|
namespace ControlCatalog.Pages
|
|
|
{
|
|
{
|
|
|
public class ItemsRepeaterPage : UserControl
|
|
public class ItemsRepeaterPage : UserControl
|
|
|
{
|
|
{
|
|
|
|
|
+ private ItemsRepeater _repeater;
|
|
|
|
|
+ private ScrollViewer _scroller;
|
|
|
|
|
+
|
|
|
public ItemsRepeaterPage()
|
|
public ItemsRepeaterPage()
|
|
|
{
|
|
{
|
|
|
this.InitializeComponent();
|
|
this.InitializeComponent();
|
|
|
- DataContext = Enumerable.Range(1, 100000).Select(i => $"Item {i}" )
|
|
|
|
|
- .ToArray();
|
|
|
|
|
|
|
+ _repeater = this.FindControl<ItemsRepeater>("repeater");
|
|
|
|
|
+ _scroller = this.FindControl<ScrollViewer>("scroller");
|
|
|
|
|
+ DataContext = Enumerable.Range(1, 100000).Select(i => $"Item {i}" ).ToArray();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void InitializeComponent()
|
|
private void InitializeComponent()
|
|
@@ -21,5 +27,48 @@ namespace ControlCatalog.Pages
|
|
|
AvaloniaXamlLoader.Load(this);
|
|
AvaloniaXamlLoader.Load(this);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private void LayoutChanged(object sender, SelectionChangedEventArgs e)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (_repeater == null)
|
|
|
|
|
+ {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var comboBox = (ComboBox)sender;
|
|
|
|
|
+
|
|
|
|
|
+ switch (comboBox.SelectedIndex)
|
|
|
|
|
+ {
|
|
|
|
|
+ case 0:
|
|
|
|
|
+ _scroller.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
|
|
|
|
|
+ _scroller.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
|
|
|
|
|
+ _repeater.Layout = new StackLayout { Orientation = Orientation.Vertical };
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 1:
|
|
|
|
|
+ _scroller.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
|
|
|
|
|
+ _scroller.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
|
|
|
|
|
+ _repeater.Layout = new StackLayout { Orientation = Orientation.Horizontal };
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 2:
|
|
|
|
|
+ _scroller.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
|
|
|
|
|
+ _scroller.VerticalScrollBarVisibility = ScrollBarVisibility.Disabled;
|
|
|
|
|
+ _repeater.Layout = new UniformGridLayout
|
|
|
|
|
+ {
|
|
|
|
|
+ Orientation = Orientation.Vertical,
|
|
|
|
|
+ MinItemWidth = 200,
|
|
|
|
|
+ MinItemHeight = 200,
|
|
|
|
|
+ };
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 3:
|
|
|
|
|
+ _scroller.HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled;
|
|
|
|
|
+ _scroller.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
|
|
|
|
|
+ _repeater.Layout = new UniformGridLayout
|
|
|
|
|
+ {
|
|
|
|
|
+ Orientation = Orientation.Horizontal,
|
|
|
|
|
+ MinItemWidth = 200,
|
|
|
|
|
+ MinItemHeight = 200,
|
|
|
|
|
+ };
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|