| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- using System.Collections;
- using Avalonia.Controls;
- using Avalonia.Interactivity;
- namespace ControlCatalog.Pages
- {
- public partial class TabbedPageFirstLookPage : UserControl
- {
- private int _tabCounter = 3;
- public TabbedPageFirstLookPage()
- {
- InitializeComponent();
- }
- private void OnAddTab(object? sender, RoutedEventArgs e)
- {
- var idx = ++_tabCounter;
- var page = new ContentPage
- {
- Header = $"Tab {idx}",
- Content = new StackPanel
- {
- Margin = new Avalonia.Thickness(16),
- Spacing = 8,
- Children =
- {
- new TextBlock
- {
- Text = $"Tab {idx}",
- FontSize = 24,
- FontWeight = Avalonia.Media.FontWeight.Bold
- },
- new TextBlock
- {
- Text = $"This tab was added dynamically (tab #{idx}).",
- Opacity = 0.7,
- TextWrapping = Avalonia.Media.TextWrapping.Wrap
- }
- }
- }
- };
- ((IList)DemoTabs.Pages!).Add(page);
- UpdateStatus();
- }
- private void OnRemoveTab(object? sender, RoutedEventArgs e)
- {
- var pages = (IList)DemoTabs.Pages!;
- if (pages.Count > 1)
- {
- pages.RemoveAt(pages.Count - 1);
- UpdateStatus();
- }
- }
- private void OnPlacementChanged(object? sender, SelectionChangedEventArgs e)
- {
- if (DemoTabs == null) return;
- DemoTabs.TabPlacement = PlacementCombo.SelectedIndex switch
- {
- 1 => TabPlacement.Bottom,
- 2 => TabPlacement.Left,
- 3 => TabPlacement.Right,
- _ => TabPlacement.Top
- };
- }
- private void OnSelectionChanged(object? sender, PageSelectionChangedEventArgs e)
- {
- UpdateStatus();
- }
- private void UpdateStatus()
- {
- if (StatusText == null) return;
- var pages = (IList)DemoTabs.Pages!;
- var pageName = (DemoTabs.SelectedPage as ContentPage)?.Header?.ToString() ?? "—";
- StatusText.Text = $"{pages.Count} tab{(pages.Count != 1 ? "s" : "")} | Selected: {pageName} ({DemoTabs.SelectedIndex})";
- }
- }
- }
|