Add ShellDemo sample with comprehensive XAML controls showcase
Complete ShellDemo application demonstrating all MAUI controls: - App/AppShell: Shell navigation with flyout menu - HomePage: Feature cards, theme toggle, quick actions - ButtonsPage: Button styles, states, variations, event logging - TextInputPage: Entry, Editor, SearchBar with keyboard shortcuts - SelectionPage: CheckBox, Switch, Slider with colored variants - PickersPage: Picker, DatePicker, TimePicker demos - ListsPage: CollectionView with fruits, colors, contacts - ProgressPage: ProgressBar, ActivityIndicator, interactive demo - GridsPage: Grid layouts - auto/star/absolute sizing, spans, nesting - AboutPage: OpenMaui Linux information - DetailPage: Push/pop navigation demo All pages use proper XAML with code-behind following MAUI patterns. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
92
samples/ShellDemo/Pages/PickersPage.xaml.cs
Normal file
92
samples/ShellDemo/Pages/PickersPage.xaml.cs
Normal file
@@ -0,0 +1,92 @@
|
||||
using System;
|
||||
using Microsoft.Maui.Controls;
|
||||
|
||||
namespace ShellDemo.Pages;
|
||||
|
||||
public partial class PickersPage : ContentPage
|
||||
{
|
||||
private int _eventCount = 0;
|
||||
|
||||
public PickersPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// Set date range for the range picker
|
||||
var startOfMonth = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1);
|
||||
var endOfMonth = startOfMonth.AddMonths(1).AddDays(-1);
|
||||
RangeDatePicker.MinimumDate = startOfMonth;
|
||||
RangeDatePicker.MaximumDate = endOfMonth;
|
||||
}
|
||||
|
||||
private void LogEvent(string message)
|
||||
{
|
||||
_eventCount++;
|
||||
var timestamp = DateTime.Now.ToString("HH:mm:ss");
|
||||
EventLog.Text = $"[{timestamp}] {_eventCount}. {message}\n{EventLog.Text}";
|
||||
}
|
||||
|
||||
private void OnFruitPickerChanged(object? sender, EventArgs e)
|
||||
{
|
||||
if (FruitPicker.SelectedIndex >= 0)
|
||||
{
|
||||
var item = FruitPicker.ItemsSource[FruitPicker.SelectedIndex]?.ToString();
|
||||
FruitSelectedLabel.Text = $"Selected: {item}";
|
||||
LogEvent($"Fruit selected: {item}");
|
||||
}
|
||||
}
|
||||
|
||||
private void OnColorPickerChanged(object? sender, EventArgs e)
|
||||
{
|
||||
if (ColorPicker.SelectedIndex >= 0)
|
||||
{
|
||||
LogEvent($"Color selected: {ColorPicker.ItemsSource[ColorPicker.SelectedIndex]}");
|
||||
}
|
||||
}
|
||||
|
||||
private void OnSizePickerChanged(object? sender, EventArgs e)
|
||||
{
|
||||
if (sender is Picker picker && picker.SelectedIndex >= 0)
|
||||
{
|
||||
LogEvent($"Size selected: {picker.ItemsSource[picker.SelectedIndex]}");
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDateSelected(object? sender, DateChangedEventArgs e)
|
||||
{
|
||||
DateSelectedLabel.Text = $"Selected: {e.NewDate:d}";
|
||||
LogEvent($"Date selected: {e.NewDate:d}");
|
||||
}
|
||||
|
||||
private void OnRangeDateSelected(object? sender, DateChangedEventArgs e)
|
||||
{
|
||||
LogEvent($"Date (limited): {e.NewDate:d}");
|
||||
}
|
||||
|
||||
private void OnStyledDateSelected(object? sender, DateChangedEventArgs e)
|
||||
{
|
||||
LogEvent($"Styled date: {e.NewDate:d}");
|
||||
}
|
||||
|
||||
private void OnTimeChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
{
|
||||
if (e.PropertyName == nameof(TimePicker.Time))
|
||||
{
|
||||
var time = BasicTimePicker.Time;
|
||||
TimeSelectedLabel.Text = $"Selected: {time:hh\\:mm}";
|
||||
LogEvent($"Time selected: {time:hh\\:mm}");
|
||||
}
|
||||
}
|
||||
|
||||
private void OnStyledTimeChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
{
|
||||
if (e.PropertyName == nameof(TimePicker.Time) && sender is TimePicker picker)
|
||||
{
|
||||
LogEvent($"Styled time: {picker.Time:hh\\:mm}");
|
||||
}
|
||||
}
|
||||
|
||||
private void OnSetAlarmClicked(object? sender, EventArgs e)
|
||||
{
|
||||
LogEvent($"Alarm set for {AlarmTimePicker.Time:hh\\:mm}");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user