添加项目文件。

This commit is contained in:
GG Z
2024-09-22 11:05:41 +08:00
parent fb5d55723a
commit 49ceaae6a8
764 changed files with 78850 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
using Microsoft.Xaml.Behaviors;
using System.Windows;
using System.Windows.Controls;
namespace Sai.Toolkit.Mvvm.Behaviors;
/// <summary>
/// 在xaml的资源中声明viewModel继承IValidationExceptionHandler通过IsValid判断能否执行
/// </summary>
public class ValidationRuleBehavior : Behavior<FrameworkElement>
{
private int errorCount;
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.AddHandler(Validation.ErrorEvent, new EventHandler<ValidationErrorEventArgs>(OnValidationError));
}
protected override void OnDetaching()
{
AssociatedObject.RemoveHandler(Validation.ErrorEvent, new EventHandler<ValidationErrorEventArgs>(OnValidationError));
}
private void OnValidationError(object sender, ValidationErrorEventArgs e)
{
if (AssociatedObject.DataContext is IValidationExceptionHandler handler)
{
if (e.OriginalSource is UIElement elem)
{
if (e.Action == ValidationErrorEventAction.Added)
{
errorCount++;
}
else if (e.Action == ValidationErrorEventAction.Removed)
{
errorCount--;
}
}
handler.IsValid = errorCount == 0;
}
}
}