diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/InvokeCommandOnLoadedBehavior.cs b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/InvokeCommandOnLoadedBehavior.cs index 6d610604..fc213f86 100644 --- a/src/Snap.Hutao/Snap.Hutao/Control/Behavior/InvokeCommandOnLoadedBehavior.cs +++ b/src/Snap.Hutao/Snap.Hutao/Control/Behavior/InvokeCommandOnLoadedBehavior.cs @@ -14,12 +14,31 @@ namespace Snap.Hutao.Control.Behavior; [DependencyProperty("CommandParameter", typeof(object))] internal sealed partial class InvokeCommandOnLoadedBehavior : BehaviorBase { + private bool executed; + + protected override void OnAttached() + { + base.OnAttached(); + + // FrameworkElement in a ItemsRepeater gets attached twice + if (!executed && AssociatedObject is FrameworkElement { IsLoaded: true }) + { + TryExecuteCommand(); + } + } + /// protected override void OnAssociatedObjectLoaded() + { + TryExecuteCommand(); + } + + private void TryExecuteCommand() { if (Command is not null && Command.CanExecute(CommandParameter)) { Command.Execute(CommandParameter); + executed = true; } } } \ No newline at end of file