You can check it on item:addedcopied and fix it. You can change the checks to meet your goals.
public class ItemEventHandler
{
protected void SetNameToDisplayName(object sender, EventArgs args)
{
var itemcopiedItem = (Item)Event.ExtractParameter(args, 01);
if (itemcopiedItem.Database.Name != "master"
|| !itemcopiedItem.Paths.Path.StartsWith("/sitecore/content/")
|| itemcopiedItem.Appearance.DisplayName == itemcopiedItem.Name)
{
return;
}
itemcopiedItem.Editing.BeginEdit();
try
{
itemcopiedItem.NameAppearance.DisplayName = item.AppearancecopiedItem.DisplayName;Name;
}
finally
{
itemcopiedItem.Editing.EndEdit();
}
}
}
Config
<sitecore>
<events>
<event name="item:copied">
<handler type="Sitecore.Foundation.Presentation.EventHandler.ItemEventHandler, Sitecore.Foundation.Presentation" method="SetNameToDisplayName">
<patch:insert/>
</handler>
</event>
</events>
</sitecore>