How to Modify UserWidget Properties in C++ to Persist in the Editor?

I’ve created a custom UserWidget subclass with some convenient functions. One of them is SetChildTextFont, which is a CallInEditor function designed to batch set the font for all TextBlock widgets. It works fine in the editor, but the font changes do not persist after closing the editor or compiling. I’ve tried using MarkPackageDirty and PostEditChangeProperty, but neither worked. Does anyone know how to make these changes persist?
BetterUserWidget

void UBetterUserWidget::SetChildTextFont()
{
	if(ChildTextFont.HasValidFont())
	{
		FProperty* FontProperty = UTextBlock::StaticClass()->FindPropertyByName(TEXT("Font"));
		TArray<UTextBlock*> AllTextBlocks;
		GetAllChildByClass<UTextBlock>(UTextBlock::StaticClass(),AllTextBlocks);
		for (auto TextBlock : AllTextBlocks)
		{
			TextBlock->SetFont(ChildTextFont);
			FPropertyChangedEvent PropertyChangedEvent (FontProperty,EPropertyChangeType::ValueSet);
			TextBlock->MarkPackageDirty();
			TextBlock->PostEditChangeProperty(PropertyChangedEvent);
			
		}
		if (UWorld* World = GetWorld())
		{
			if (World->IsEditorWorld())
			{
				UPackage* Package = GetOuter()->GetOutermost();
				Package->MarkPackageDirty();
				TArray<UPackage*> PackagesToSave = { Package};
				FEditorFileUtils::PromptForCheckoutAndSave(PackagesToSave, true, false, nullptr, false, true);
			}
		}
	}
}