The FontAttributes contain only None, Bold and Italic. If you want to underline your text, you have to implement it on your own.
Xamarin.Forms Effects allow you to customize the underlying native controls without writing custom renderers and custom controls. Creating your own effects is really easy if you follow the linked tutorial.
To be able to use the effect in you Xaml, you have to create a RoutingEffect in your Core project.
I introduced EffectNamespace to add some refactoring safety, because this namespace is used in the platform specific implementation, too.
Add the Effect to your Label:
On Android it’s pretty easy to underline the whole text. You just have to set the paint flag for it. You should listen to some property changes (e.g. Text and FormattedText), because the renderer might reset the paint flags. You should add the flag using the OR-operator in combination with the old flags, to keep the already set flags. When you remove the effect, you should remove via the inverse bit operation.
Underlining a Text on iOS is as easy as on Android. You have to add the UnderlineStyle attribute to the AttributedText.
It’s very easy to customize native controls with Effects.
Keep in mind, that this is a solution for Labels with simple text. If you want to underline just some parts of the Text using FormattedText, you might have a problem :) See my post on FormattedText for more information on the problem.