@@ -1,6 +1,8 @@
|
||||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using Irihi.Avalonia.Shared.Contracts;
|
||||
|
||||
namespace Ursa.Demo.ViewModels;
|
||||
|
||||
@@ -11,13 +13,48 @@ public partial class FormDemoViewModel : ObservableObject
|
||||
public FormDemoViewModel()
|
||||
{
|
||||
Model = new DataModel();
|
||||
FormGroups = new ObservableCollection<IFormElement>
|
||||
{
|
||||
new FormGroupViewModel
|
||||
{
|
||||
Title = "Basic Information",
|
||||
Items = new ObservableCollection<IFromItemViewModel>
|
||||
{
|
||||
new FormTextViewModel { Label = "Name" },
|
||||
new FormAgeViewModel { Label = "Age" },
|
||||
new FormTextViewModel { Label = "Email" }
|
||||
}
|
||||
},
|
||||
new FormGroupViewModel
|
||||
{
|
||||
Title = "Education Information",
|
||||
Items = new ObservableCollection<IFromItemViewModel>
|
||||
{
|
||||
new FormTextViewModel { Label = "College" },
|
||||
new FormDateRangeViewModel { Label = "Study Time" }
|
||||
}
|
||||
},
|
||||
new FormTextViewModel(){ Label = "Other" }
|
||||
};
|
||||
}
|
||||
|
||||
public ObservableCollection<IFormElement> FormGroups { get; set; }
|
||||
}
|
||||
|
||||
public partial class DataModel : ObservableObject
|
||||
public class DataModel : ObservableObject
|
||||
{
|
||||
private DateTime _date;
|
||||
|
||||
private string _email = string.Empty;
|
||||
private string _name = string.Empty;
|
||||
|
||||
private double _number;
|
||||
|
||||
public DataModel()
|
||||
{
|
||||
Date = DateTime.Today;
|
||||
}
|
||||
|
||||
[MinLength(10)]
|
||||
public string Name
|
||||
{
|
||||
@@ -25,8 +62,6 @@ public partial class DataModel : ObservableObject
|
||||
set => SetProperty(ref _name, value);
|
||||
}
|
||||
|
||||
private double _number;
|
||||
|
||||
[Range(0.0, 10.0)]
|
||||
public double Number
|
||||
{
|
||||
@@ -34,8 +69,6 @@ public partial class DataModel : ObservableObject
|
||||
set => SetProperty(ref _number, value);
|
||||
}
|
||||
|
||||
private string _email = string.Empty;
|
||||
|
||||
[EmailAddress]
|
||||
public string Email
|
||||
{
|
||||
@@ -43,16 +76,50 @@ public partial class DataModel : ObservableObject
|
||||
set => SetProperty(ref _email, value);
|
||||
}
|
||||
|
||||
private DateTime _date;
|
||||
|
||||
public DateTime Date
|
||||
{
|
||||
get => _date;
|
||||
set => SetProperty(ref _date, value);
|
||||
}
|
||||
}
|
||||
|
||||
public DataModel()
|
||||
{
|
||||
Date = DateTime.Today;
|
||||
}
|
||||
public interface IFormElement
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public interface IFormGroupViewModel : IFormGroup, IFormElement
|
||||
{
|
||||
public string? Title { get; set; }
|
||||
public ObservableCollection<IFromItemViewModel> Items { get; set; }
|
||||
}
|
||||
|
||||
public interface IFromItemViewModel: IFormElement
|
||||
{
|
||||
public string? Label { get; set; }
|
||||
}
|
||||
|
||||
public partial class FormGroupViewModel : ObservableObject, IFormGroupViewModel
|
||||
{
|
||||
[ObservableProperty] private string? _title;
|
||||
public ObservableCollection<IFromItemViewModel> Items { get; set; } = [];
|
||||
}
|
||||
|
||||
public partial class FormTextViewModel : ObservableObject, IFromItemViewModel
|
||||
{
|
||||
[ObservableProperty] private string? _label;
|
||||
[ObservableProperty] private string? _value;
|
||||
}
|
||||
|
||||
public partial class FormAgeViewModel : ObservableObject, IFromItemViewModel
|
||||
{
|
||||
[ObservableProperty] private uint? _age;
|
||||
[ObservableProperty] private string? _label;
|
||||
}
|
||||
|
||||
public partial class FormDateRangeViewModel : ObservableObject, IFromItemViewModel
|
||||
{
|
||||
[ObservableProperty] private DateTime? _end;
|
||||
[ObservableProperty] private string? _label;
|
||||
[ObservableProperty] private DateTime? _start;
|
||||
}
|
||||
Reference in New Issue
Block a user