A cross-platform UI framework for .NET
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

78 lines
2.4 KiB

using Avalonia.Controls;
using Avalonia.Controls.Primitives;
using Avalonia.Interactivity;
namespace ControlCatalog.Pages
{
public partial class DrawerPageCompactPage : UserControl
{
private bool _isLoaded;
public DrawerPageCompactPage()
{
InitializeComponent();
}
protected override void OnLoaded(RoutedEventArgs e)
{
base.OnLoaded(e);
_isLoaded = true;
DemoDrawer.Opened += OnDrawerStatusChanged;
DemoDrawer.Closed += OnDrawerStatusChanged;
}
protected override void OnUnloaded(RoutedEventArgs e)
{
base.OnUnloaded(e);
DemoDrawer.Opened -= OnDrawerStatusChanged;
DemoDrawer.Closed -= OnDrawerStatusChanged;
}
private void OnDrawerStatusChanged(object? sender, System.EventArgs e) => UpdateStatus();
private void OnLayoutChanged(object? sender, SelectionChangedEventArgs e)
{
if (!_isLoaded)
return;
DemoDrawer.DrawerLayoutBehavior = LayoutCombo.SelectedIndex switch
{
0 => DrawerLayoutBehavior.CompactOverlay,
1 => DrawerLayoutBehavior.CompactInline,
_ => DrawerLayoutBehavior.CompactOverlay
};
}
private void OnCompactLengthChanged(object? sender, RangeBaseValueChangedEventArgs e)
{
if (!_isLoaded)
return;
DemoDrawer.CompactDrawerLength = e.NewValue;
CompactLengthText.Text = ((int)e.NewValue).ToString();
}
private void OnDrawerLengthChanged(object? sender, RangeBaseValueChangedEventArgs e)
{
if (!_isLoaded)
return;
DemoDrawer.DrawerLength = e.NewValue;
DrawerLengthText.Text = ((int)e.NewValue).ToString();
}
private void OnMenuItemClick(object? sender, RoutedEventArgs e)
{
if (!_isLoaded)
return;
if (sender is not Button button)
return;
var item = button.Tag?.ToString() ?? "Home";
DetailTitleText.Text = item;
DetailPage.Header = item;
DemoDrawer.IsOpen = false;
}
private void UpdateStatus()
{
StatusText.Text = $"Drawer: {(DemoDrawer.IsOpen ? "Open" : "Closed")}";
}
}
}