All text rendered by Remotion.Web and Remotion.ObjectBinding.Web controls is HTML encoded by default.
For each property that should allow customization of the encoding, the following options are available via the enum-type 'StringType':
If the string was retrieved from the domain's metadata (ISmartControl.DisplayName, etc), it is handled as PlainText.
If the string was retrieved from the configured property, it is handled as PlainTextWithHotkey.
Retrieves the hotkey and then HTML-encodes the string.
PlainText: HTML-encodes the string.
Html: Renderes the string as-is, i.e. without HTML-encoding or hotkey-analyzation.
BocList column titles
Other text generated by controls
For easier migration, it should be possible to use the behavior of the orginal (hardcoded) implementation as default. If this can only be accomplished by using weird APIs, check again with product requirements.
TBD: Provide an additional extension point for evaluating the StringType enum value. This extension point would have to be aware of the individual properties, either explicitly by providing a dedicated evaluation method for each string property or by supplying the string property's name or an IPropertyInformation object. In the second option, providing a unified API for all controls could also be possible. In addition, this API could possibly be used to implement backwards compatibility.
TBD: MenuItems and Buttons could also provide an additional extension point to allow the injection of HTML markup next to the encoded text. This would be result in the same output as if using StringType.Html and providing the hotkey-formatted and encoded text incuding all the addional markup required. If needed, downlevel infrastructure would use HTML in combination with a separate call to IHotkeyFormatter.
when using a custom string type, provide an IsEmpty-implementation and possibly an IsNullOrEmpty extension method if a reference type is chosen.