Files
Dan Clark 911ed375b4 wip
2024-11-23 21:41:59 +00:00

39 lines
1.0 KiB
C#

using Avalonia;
using Avalonia.Metadata;
using Avalonia.Xaml.Interactivity;
using Toolkit.Foundation;
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;
}
}