Создайте ресурс шаблона в словаре ресурсов xaml, который вы импортируете в App.xaml:
<ResourceDictionary ... />
<ControlTemplate x:Key="PageTemplate">
<Grid>
<!-- Any pages with content that use this template will display contents in this ContentPresenter -->
<ContentPresenter />
<!-- Add elements common to all pages, TemplateBinding looks at the code behind for properties on the page being displayed through this template -->
<FloatingNavigationMenu Contents={TemplateBinding MenuContents} />
</Grid>
</ControlTemplate>
</ResourceDictionary>
Затем примените этот шаблон к своим страницам:
<ContentPage ControlTemplate={StaticResource PageTemplate}>
...
</ContentPage>
Если вы хотите, вы можете создать базовый класс страницы контента, и в конструкторе вы можете сделать:
public abstract class BasePage : ContentPage
{
public BasePage()
{
SetDynamicResource(ControlTemplateProperty, "PageTemplate");
}
...
}
При этом к страницам, унаследованным от BasePage, автоматически будет применен шаблон. Возможно, вы захотите определить свои свойства, которые привязаны к NavigationMenu, в этом базовом классе страниц.