mirror of
https://gitcode.com/gh_mirrors/se/Semi.Avalonia
synced 2026-05-01 13:39:27 +08:00
misc: extract VMs.
This commit is contained in:
37
demo/Semi.Avalonia.Demo/ViewModels/AboutUsViewModel.cs
Normal file
37
demo/Semi.Avalonia.Demo/ViewModels/AboutUsViewModel.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
using Avalonia.Platform.Storage;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
|
||||
namespace Semi.Avalonia.Demo.ViewModels;
|
||||
|
||||
public partial class AboutUsViewModel : ObservableObject
|
||||
{
|
||||
public ICommand NavigateCommand { get; set; }
|
||||
|
||||
internal ILauncher? Launcher { get; set; }
|
||||
|
||||
public AboutUsViewModel()
|
||||
{
|
||||
NavigateCommand = new AsyncRelayCommand<string>(OnNavigateAsync);
|
||||
}
|
||||
|
||||
private static readonly IReadOnlyDictionary<string, string> _keyToUrlMapping = new Dictionary<string, string>()
|
||||
{
|
||||
["semi"] = "https://github.com/irihitech/Semi.Avalonia",
|
||||
["ursa"] = "https://github.com/irihitech/Ursa.Avalonia",
|
||||
["mantra"] = "https://www.bilibili.com/video/BV15pfKYbEEQ",
|
||||
["huska"] = "https://www.bilibili.com/video/BV1knj1zWE4A",
|
||||
};
|
||||
|
||||
private async Task OnNavigateAsync(string? arg)
|
||||
{
|
||||
if (Launcher is not null && arg is not null && _keyToUrlMapping.TryGetValue(arg.ToLower(), out var uri))
|
||||
{
|
||||
await Launcher.LaunchUriAsync(new Uri(uri));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
using System.Collections.ObjectModel;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
namespace Semi.Avalonia.Demo.ViewModels;
|
||||
|
||||
public class AutoCompleteBoxDemoViewModel : ObservableObject
|
||||
{
|
||||
public ObservableCollection<StateData> States { get; set; } =
|
||||
[
|
||||
new("Alabama", "AL", "Montgomery"),
|
||||
new("Alaska", "AK", "Juneau"),
|
||||
new("Arizona", "AZ", "Phoenix"),
|
||||
new("Arkansas", "AR", "Little Rock"),
|
||||
new("California", "CA", "Sacramento"),
|
||||
new("Colorado", "CO", "Denver"),
|
||||
new("Connecticut", "CT", "Hartford"),
|
||||
new("Delaware", "DE", "Dover"),
|
||||
new("Florida", "FL", "Tallahassee"),
|
||||
new("Georgia", "GA", "Atlanta"),
|
||||
new("Hawaii", "HI", "Honolulu"),
|
||||
new("Idaho", "ID", "Boise"),
|
||||
new("Illinois", "IL", "Springfield"),
|
||||
new("Indiana", "IN", "Indianapolis"),
|
||||
new("Iowa", "IA", "Des Moines"),
|
||||
new("Kansas", "KS", "Topeka"),
|
||||
new("Kentucky", "KY", "Frankfort"),
|
||||
new("Louisiana", "LA", "Baton Rouge"),
|
||||
new("Maine", "ME", "Augusta"),
|
||||
new("Maryland", "MD", "Annapolis"),
|
||||
new("Massachusetts", "MA", "Boston"),
|
||||
new("Michigan", "MI", "Lansing"),
|
||||
new("Minnesota", "MN", "St. Paul"),
|
||||
new("Mississippi", "MS", "Jackson"),
|
||||
new("Missouri", "MO", "Jefferson City"),
|
||||
new("Montana", "MT", "Helena"),
|
||||
new("Nebraska", "NE", "Lincoln"),
|
||||
new("Nevada", "NV", "Carson City"),
|
||||
new("New Hampshire", "NH", "Concord"),
|
||||
new("New Jersey", "NJ", "Trenton"),
|
||||
new("New Mexico", "NM", "Santa Fe"),
|
||||
new("New York", "NY", "Albany"),
|
||||
new("North Carolina", "NC", "Raleigh"),
|
||||
new("North Dakota", "ND", "Bismarck"),
|
||||
new("Ohio", "OH", "Columbus"),
|
||||
new("Oklahoma", "OK", "Oklahoma City"),
|
||||
new("Oregon", "OR", "Salem"),
|
||||
new("Pennsylvania", "PA", "Harrisburg"),
|
||||
new("Rhode Island", "RI", "Providence"),
|
||||
new("South Carolina", "SC", "Columbia"),
|
||||
new("South Dakota", "SD", "Pierre"),
|
||||
new("Tennessee", "TN", "Nashville"),
|
||||
new("Texas", "TX", "Austin"),
|
||||
new("Utah", "UT", "Salt Lake City"),
|
||||
new("Vermont", "VT", "Montpelier"),
|
||||
new("Virginia", "VA", "Richmond"),
|
||||
new("Washington", "WA", "Olympia"),
|
||||
new("West Virginia", "WV", "Charleston"),
|
||||
new("Wisconsin", "WI", "Madison"),
|
||||
new("Wyoming", "WY", "Cheyenne")
|
||||
];
|
||||
}
|
||||
|
||||
public class StateData(string name, string abbreviation, string capital)
|
||||
{
|
||||
public string Name { get; private set; } = name;
|
||||
public string Abbreviation { get; private set; } = abbreviation;
|
||||
public string Capital { get; private set; } = capital;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
using System.Collections.ObjectModel;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
namespace Semi.Avalonia.Demo.ViewModels;
|
||||
|
||||
public class ComboBoxDemoViewModel : ObservableObject
|
||||
{
|
||||
public ObservableCollection<string> Items { get; set; } = ["Ding", "Otter", "Husky", "Mr.17", "Cass"];
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
namespace Semi.Avalonia.Demo.ViewModels;
|
||||
|
||||
public class RefreshContainerDemoViewModel : ObservableObject
|
||||
{
|
||||
public ObservableCollection<string> Items { get; }
|
||||
|
||||
public RefreshContainerDemoViewModel()
|
||||
{
|
||||
Items = new ObservableCollection<string>(Enumerable.Range(1, 200).Select(i => $"Item {i}"));
|
||||
}
|
||||
|
||||
public async Task AddToTop()
|
||||
{
|
||||
await Task.Delay(1000);
|
||||
Items.Insert(0, $"Item {200 - Items.Count}");
|
||||
}
|
||||
}
|
||||
29
demo/Semi.Avalonia.Demo/ViewModels/SplitViewDemoViewModel.cs
Normal file
29
demo/Semi.Avalonia.Demo/ViewModels/SplitViewDemoViewModel.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using System.Collections.ObjectModel;
|
||||
using Avalonia.Controls;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
namespace Semi.Avalonia.Demo.ViewModels;
|
||||
|
||||
public class SplitViewDemoViewModel : ObservableObject
|
||||
{
|
||||
public ObservableCollection<string> Songs { get; set; } =
|
||||
[
|
||||
"320万年前",
|
||||
"隐德来希",
|
||||
"孔明",
|
||||
"锦鲤卟噜噜",
|
||||
"指鹿为马",
|
||||
"热带季风Remix",
|
||||
"加州梦境",
|
||||
"渐近自由",
|
||||
"世界所有的烂漫",
|
||||
];
|
||||
|
||||
public static ObservableCollection<SplitViewDisplayMode> DisplayModes { get; set; } =
|
||||
[
|
||||
SplitViewDisplayMode.Inline,
|
||||
SplitViewDisplayMode.CompactInline,
|
||||
SplitViewDisplayMode.Overlay,
|
||||
SplitViewDisplayMode.CompactOverlay,
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user