Files
Toolkit2/Toolkit.UI.Avalonia/ConditionAction.cs
T
2024-05-09 22:37:36 +01:00

38 lines
1.0 KiB
C#

using Avalonia;
using Avalonia.Metadata;
using Avalonia.Xaml.Interactivity;
namespace Toolkit.UI.Avalonia;
public class ConditionAction :
AvaloniaObject,
IAction
{
public static readonly DirectProperty<ConditionAction, ActionCollection> ActionsProperty =
AvaloniaProperty.RegisterDirect<ConditionAction, ActionCollection>(nameof(Actions), x => x.Actions);
public static readonly StyledProperty<ICondition> ConditionProperty =
AvaloniaProperty.Register<ConditionAction, ICondition>(nameof(Condition));
private ActionCollection? actions;
[Content]
public ActionCollection Actions => actions ??= [];
public ICondition Condition
{
get => GetValue(ConditionProperty);
set => SetValue(ConditionProperty, value);
}
public object? Execute(object? sender, object? parameter)
{
bool? result = Condition?.Evaluate();
if (result is true)
{
Interaction.ExecuteActions(sender, Actions, parameter);
}
return true;
}
}