feat: add demo.

This commit is contained in:
Dong Bin
2025-04-18 02:08:12 +08:00
parent c1d486297d
commit e9a94798e3
8 changed files with 138 additions and 5 deletions

View File

@@ -0,0 +1,19 @@
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:u="https://irihi.tech/ursa"
xmlns:viewModels="clr-namespace:Ursa.Demo.ViewModels"
mc:Ignorable="d" d:DesignWidth="800"
d:DesignHeight="450"
x:DataType="viewModels:PopConfirmDemoViewModel"
x:Class="Ursa.Demo.Pages.PopConfirmDemo">
<StackPanel HorizontalAlignment="Left">
<u:PopConfirm PopupHeader="Header" PopupContent="Content"
ConfirmCommand="{Binding Path=ConfirmCommand}"
CancelCommand="{Binding Path=CancelCommand}"
>
<Button Content="Hello World"></Button>
</u:PopConfirm>
</StackPanel>
</UserControl>

View File

@@ -0,0 +1,25 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Ursa.Controls;
using Ursa.Demo.ViewModels;
namespace Ursa.Demo.Pages;
public partial class PopConfirmDemo : UserControl
{
public PopConfirmDemo()
{
InitializeComponent();
}
protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
{
base.OnAttachedToVisualTree(e);
if (this.DataContext is not PopConfirmDemoViewModel vm) return;
var manager = WindowToastManager.TryGetToastManager(TopLevel.GetTopLevel(this), out var m)
? m
: new WindowToastManager(TopLevel.GetTopLevel(this));
vm.ToastManager = manager;
}
}

View File

@@ -69,6 +69,7 @@ public partial class MainViewViewModel : ViewModelBase
MenuKeys.MenuKeyNumPad => new NumPadDemoViewModel(),
MenuKeys.MenuKeyPagination => new PaginationDemoViewModel(),
MenuKeys.MenuKeyPinCode => new PinCodeDemoViewModel(),
MenuKeys.MenuKeyPopConfirm => new PopConfirmDemoViewModel(),
MenuKeys.MenuKeyRangeSlider => new RangeSliderDemoViewModel(),
MenuKeys.MenuKeyRating => new RatingDemoViewModel(),
MenuKeys.MenuKeyScrollToButton => new ScrollToButtonDemoViewModel(),

View File

@@ -44,6 +44,7 @@ public class MenuViewModel : ViewModelBase
new() { MenuHeader = "Loading", Key = MenuKeys.MenuKeyLoading, Status = "Updated" },
new() { MenuHeader = "Message Box", Key = MenuKeys.MenuKeyMessageBox },
new() { MenuHeader = "Notification", Key = MenuKeys.MenuKeyNotification },
new() { MenuHeader = "PopConfirm", Key = MenuKeys.MenuKeyPopConfirm },
new() { MenuHeader = "Toast", Key = MenuKeys.MenuKeyToast },
new() { MenuHeader = "Skeleton", Key = MenuKeys.MenuKeySkeleton },
}
@@ -135,6 +136,7 @@ public static class MenuKeys
public const string MenuKeyNumPad = "NumPad";
public const string MenuKeyPagination = "Pagination";
public const string MenuKeyPinCode = "PinCode";
public const string MenuKeyPopConfirm = "PopConfirm";
public const string MenuKeyRangeSlider = "RangeSlider";
public const string MenuKeyRating = "Rating";
public const string MenuKeyScrollToButton = "ScrollToButton";

View File

@@ -0,0 +1,31 @@
using System.Windows.Input;
using Avalonia.Controls.Notifications;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using Ursa.Controls;
namespace Ursa.Demo.ViewModels;
public partial class PopConfirmDemoViewModel: ObservableObject
{
internal WindowToastManager? ToastManager { get; set; }
public ICommand ConfirmCommand { get; }
public ICommand CancelCommand { get; }
public PopConfirmDemoViewModel()
{
ConfirmCommand = new RelayCommand(OnConfirm);
CancelCommand = new RelayCommand(OnCancel);
}
private void OnConfirm()
{
ToastManager?.Show(new Toast("Confirmed"), type: NotificationType.Success, classes: ["Light"]);
}
private void OnCancel()
{
ToastManager?.Show(new Toast("Canceled"), type:NotificationType.Error, classes: ["Light"]);
}
}