commit 005960b8cefda19b9d5781dc8623ce6bb1a77b96 Author: KP9lKk Date: Wed Jan 22 11:34:46 2025 +0300 git init diff --git a/.idea/.idea.AvaloniaValidationSample/.idea/.gitignore b/.idea/.idea.AvaloniaValidationSample/.idea/.gitignore new file mode 100644 index 0000000..36534b2 --- /dev/null +++ b/.idea/.idea.AvaloniaValidationSample/.idea/.gitignore @@ -0,0 +1,13 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/projectSettingsUpdater.xml +/.idea.AvaloniaValidationSample.iml +/modules.xml +/contentModel.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.idea.AvaloniaValidationSample/.idea/avalonia.xml b/.idea/.idea.AvaloniaValidationSample/.idea/avalonia.xml new file mode 100644 index 0000000..0853825 --- /dev/null +++ b/.idea/.idea.AvaloniaValidationSample/.idea/avalonia.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/.idea/.idea.AvaloniaValidationSample/.idea/indexLayout.xml b/.idea/.idea.AvaloniaValidationSample/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/.idea/.idea.AvaloniaValidationSample/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea.AvaloniaValidationSample/.idea/vcs.xml b/.idea/.idea.AvaloniaValidationSample/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/.idea.AvaloniaValidationSample/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/AvaloniaValidationSample.sln b/AvaloniaValidationSample.sln new file mode 100644 index 0000000..1d2f4c5 --- /dev/null +++ b/AvaloniaValidationSample.sln @@ -0,0 +1,16 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvaloniaValidationSample", "AvaloniaValidationSample\AvaloniaValidationSample.csproj", "{01250500-3AFB-44E2-A03B-E81FAF102FDF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {01250500-3AFB-44E2-A03B-E81FAF102FDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {01250500-3AFB-44E2-A03B-E81FAF102FDF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {01250500-3AFB-44E2-A03B-E81FAF102FDF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {01250500-3AFB-44E2-A03B-E81FAF102FDF}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/AvaloniaValidationSample/AddItem.axaml b/AvaloniaValidationSample/AddItem.axaml new file mode 100644 index 0000000..89ff82e --- /dev/null +++ b/AvaloniaValidationSample/AddItem.axaml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/AvaloniaValidationSample/AddItem.axaml.cs b/AvaloniaValidationSample/AddItem.axaml.cs new file mode 100644 index 0000000..5cfe286 --- /dev/null +++ b/AvaloniaValidationSample/AddItem.axaml.cs @@ -0,0 +1,14 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace AvaloniaValidationSample; + +public partial class AddItem : Window +{ + public AddItem() + { + InitializeComponent(); + DataContext = new Item(); + } +} \ No newline at end of file diff --git a/AvaloniaValidationSample/App.axaml b/AvaloniaValidationSample/App.axaml new file mode 100644 index 0000000..115b26c --- /dev/null +++ b/AvaloniaValidationSample/App.axaml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/AvaloniaValidationSample/App.axaml.cs b/AvaloniaValidationSample/App.axaml.cs new file mode 100644 index 0000000..5ae5a62 --- /dev/null +++ b/AvaloniaValidationSample/App.axaml.cs @@ -0,0 +1,23 @@ +using Avalonia; +using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Markup.Xaml; + +namespace AvaloniaValidationSample; + +public partial class App : Application +{ + public override void Initialize() + { + AvaloniaXamlLoader.Load(this); + } + + public override void OnFrameworkInitializationCompleted() + { + if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + desktop.MainWindow = new MainWindow(); + } + + base.OnFrameworkInitializationCompleted(); + } +} \ No newline at end of file diff --git a/AvaloniaValidationSample/AvaloniaValidationSample.csproj b/AvaloniaValidationSample/AvaloniaValidationSample.csproj new file mode 100644 index 0000000..3eb9659 --- /dev/null +++ b/AvaloniaValidationSample/AvaloniaValidationSample.csproj @@ -0,0 +1,22 @@ + + + WinExe + net8.0 + enable + true + app.manifest + true + + + + + + + + + + None + All + + + diff --git a/AvaloniaValidationSample/Item.cs b/AvaloniaValidationSample/Item.cs new file mode 100644 index 0000000..01d7b64 --- /dev/null +++ b/AvaloniaValidationSample/Item.cs @@ -0,0 +1,28 @@ +using System; + +namespace AvaloniaValidationSample; + +public class Item +{ + public int Id { get; set; } + private string _Password { get; set; } + public string Password + { + get => _Password; + set + { + validatePassword(value); + _Password = value; + } + } + + public string Text { get; set; } + + private void validatePassword(string password) + { + if (password.Length < 3) + { + throw new ArgumentException(nameof(password), "Password length > 7 symbols"); + } + } +} \ No newline at end of file diff --git a/AvaloniaValidationSample/MainWindow.axaml b/AvaloniaValidationSample/MainWindow.axaml new file mode 100644 index 0000000..eee6cb4 --- /dev/null +++ b/AvaloniaValidationSample/MainWindow.axaml @@ -0,0 +1,26 @@ + + + +