#xaml #xamarin.forms
#xaml #xamarin.формы #xamarin.forms
Вопрос:
Я использую плавающее навигационное меню для своего проекта поэтому оно мне нужно на каждой отдельной странице это мой код
<customRenderes:NavigationImageButton Source="IconFAB"
x:Name="NavigationImageButton"
ItemTapped="NavigationImageButton_OnItemTapped"
AbsoluteLayout.LayoutFlags="PositionProportional"
AbsoluteLayout.LayoutBounds="1.0,1.0,-1,-1"
Margin="10"
Opacity="0.4"
Мне нужно преодолеть это дублирование кода, так что кто-нибудь может предложить способ сделать это
Комментарии:
1. создайте базовую страницу, от которой наследуют другие ваши страницы, и поместите этот код в базовую
2. @jason Как к этому, что вы говорите, вы можете объяснить это на примере
Ответ №1:
Создайте ресурс шаблона в словаре ресурсов 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>
При желании вы могли бы создать базовый класс contentpage, а в конструкторе вы могли бы сделать:
public abstract class BasePage : ContentPage
{
public BasePage()
{
SetDynamicResource(ControlTemplateProperty, "PageTemplate");
}
...
}
При этом к страницам, наследуемым от базовой страницы, автоматически будет применен шаблон. Вероятно, вы захотите определить свои свойства, которые привязаны к вашему NavigationMenu, также в этом базовом классе страницы.
Комментарии:
1. <Содержимое FloatingNavigationMenu={TemplateBinding MenuContents} /> что вы подразумеваете под этим FloatingNavigationMenu
2. Это просто тип, который я придумал, вы могли бы добавить туда свои пользовательские параметры:NavigationImageButton вместо этого и привязать его к свойствам BindableProperties на странице xaml.cs