feat: add temp template.

This commit is contained in:
rabbitism
2024-02-17 21:10:24 +08:00
parent 495b5651a7
commit a574fb76b4
12 changed files with 176 additions and 26 deletions

View File

@@ -12,6 +12,7 @@ public static class MenuKeys
public const string MenuKeyDrawer = "Drawer";
public const string MenuKeyDualBadge = "DualBadge";
public const string MenuKeyEnumSelector = "EnumSelector";
public const string MenuKeyForm = "Form";
public const string MenuKeyImageViewer = "ImageViewer";
public const string MenuKeyIpBox = "IPv4Box";
public const string MenuKeyIconButton = "IconButton";

View File

@@ -0,0 +1,27 @@
<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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
xmlns:vm="clr-namespace:Ursa.Demo.ViewModels;assembly=Ursa.Demo"
xmlns:u="https://irihi.tech/ursa"
x:DataType="vm:FormDemoViewModel"
x:CompileBindings="True"
x:Class="Ursa.Demo.Pages.FormDemo">
<StackPanel>
<u:Form DataContext="{Binding Model}" >
<u:FormGroup Header="Information">
<TextBox u:Form.Label="Name" Text="{Binding Name}"/>
<TextBox u:Form.Label="Email" Text="{Binding Email}"/>
</u:FormGroup>
<u:FormItem>
<CalendarDatePicker u:Form.Label="Date" SelectedDate="{Binding Date}" />
</u:FormItem>
</u:Form>
<StackPanel>
<TextBlock Text="{Binding Model.Name}"></TextBlock>
<TextBlock Text="{Binding Model.Email}"></TextBlock>
<TextBlock Text="{Binding Model.Date}"></TextBlock>
</StackPanel>
</StackPanel>
</UserControl>

View File

@@ -0,0 +1,13 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace Ursa.Demo.Pages;
public partial class FormDemo : UserControl
{
public FormDemo()
{
InitializeComponent();
}
}

View File

@@ -0,0 +1,43 @@
using System;
using System.ComponentModel.DataAnnotations;
using CommunityToolkit.Mvvm.ComponentModel;
namespace Ursa.Demo.ViewModels;
public partial class FormDemoViewModel: ObservableObject
{
[ObservableProperty] private DataModel _model;
public FormDemoViewModel()
{
Model = new DataModel();
}
}
public partial class DataModel : ObservableObject
{
private string _name;
[MinLength(10)]
public string Name
{
get=>_name;
set => SetProperty(ref _name, value);
}
private string _email;
[EmailAddress]
public string Email
{
get=>_email;
set => SetProperty(ref _email, value);
}
private DateTime _date;
public DateTime Date
{
get => _date;
set => SetProperty(ref _date, value);
}
}

View File

@@ -34,6 +34,7 @@ public class MainViewViewModel : ViewModelBase
MenuKeys.MenuKeyDrawer => new DrawerDemoViewModel(),
MenuKeys.MenuKeyDualBadge => new DualBadgeDemoViewModel(),
MenuKeys.MenuKeyEnumSelector => new EnumSelectorDemoViewModel(),
MenuKeys.MenuKeyForm => new FormDemoViewModel(),
MenuKeys.MenuKeyImageViewer => new ImageViewerDemoViewModel(),
MenuKeys.MenuKeyIconButton => new IconButtonDemoViewModel(),
MenuKeys.MenuKeyIpBox => new IPv4BoxDemoViewModel(),

View File

@@ -21,6 +21,7 @@ public class MenuViewModel: ViewModelBase
new() { MenuHeader = "Drawer", Key = MenuKeys.MenuKeyDrawer },
new() { MenuHeader = "DualBadge", Key = MenuKeys.MenuKeyDualBadge },
new() { MenuHeader = "Enum Selector", Key = MenuKeys.MenuKeyEnumSelector },
new() { MenuHeader = "Form", Key = MenuKeys.MenuKeyForm },
new() { MenuHeader = "Icon Button", Key = MenuKeys.MenuKeyIconButton },
new() { MenuHeader = "ImageViewer", Key = MenuKeys.MenuKeyImageViewer },
new() { MenuHeader = "IPv4Box", Key = MenuKeys.MenuKeyIpBox },