test: 测试 MVVM 模式与绑定

This commit is contained in:
2025-01-24 01:17:06 +08:00
parent f6118e29f8
commit 44de222ed7
16 changed files with 368 additions and 1 deletions

46
TestMvvm/App.axaml.cs Normal file
View File

@@ -0,0 +1,46 @@
using System.Linq;
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Data.Core.Plugins;
using Avalonia.Markup.Xaml;
using JackCraft.I18N;
using TestMvvm.ViewModels;
using TestMvvm.Views;
namespace TestMvvm;
public class App : Application
{
public static I18NManager I18NManager { get; } = new("TestMvvm.Assets.Resources");
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
}
public override void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
// Avoid duplicate validations from both Avalonia and the CommunityToolkit.
// More info: https://docs.avaloniaui.net/docs/guides/development-guides/data-validation#manage-validationplugins
DisableAvaloniaDataAnnotationValidation();
desktop.MainWindow = new MainWindow
{
DataContext = new MainWindowViewModel()
};
}
base.OnFrameworkInitializationCompleted();
}
private void DisableAvaloniaDataAnnotationValidation()
{
// Get an array of plugins to remove
var dataValidationPluginsToRemove =
BindingPlugins.DataValidators.OfType<DataAnnotationsValidationPlugin>().ToArray();
// remove each entry found
foreach (var plugin in dataValidationPluginsToRemove) BindingPlugins.DataValidators.Remove(plugin);
}
}