Я создал шаблоны содержимого в App.xaml, содержащие текст заголовка и значок (поиск или календарь). Это пример моего шаблона поиска.
<ControlTemplate x:Key="SearchTemplate">
<StackLayout>
<!-- Header -->
<StackLayout x:Name="TitleView" Padding="8,8" Grid.Row="1" HeightRequest="48"
BackgroundColor="{DynamicResource AppBlueColor}" Spacing="0"
HorizontalOptions="FillAndExpand" Orientation="Horizontal">
<StackLayout x:Name="Title" HorizontalOptions="FillAndExpand" IsVisible="True"
Orientation="Horizontal" VerticalOptions="FillAndExpand" Spacing="0">
<!-- Header Text Title -->
<Label Margin="16,0" FontFamily="{StaticResource Montserrat-Medium}" FontSize="16"
HorizontalOptions="CenterAndExpand" TextColor="{DynamicResource Gray-White}"
LineHeight="1.25" Text="{TemplateBinding BindingContext.HeaderText}" VerticalOptions="Center" VerticalTextAlignment="Center" />
</StackLayout>
<StackLayout x:Name="Search" HorizontalOptions="EndAndExpand" IsVisible="False"
Orientation="Horizontal" Spacing="0">
<!-- Back to title layout -->
<buttons:SfButton x:Name="BackToTitle" Command="{TemplateBinding BackToTitleClickedCommand}" Text="{StaticResource Back}"
Style="{StaticResource NavigationBarButtonStyle}" WidthRequest="38" HeightRequest="38"
CornerRadius="4" Padding="0"/>
<!-- Rounded Search Entry -->
<border:SfBorder Style="{StaticResource SfBorderStyle}">
<controls:BorderlessEntry x:Name="SearchEntry"
Text="Enter Search" Placeholder="Search here"
HorizontalOptions="FillAndExpand" Style="{StaticResource SearchEntryStyle}"/>
</border:SfBorder>
</StackLayout>
<!-- Search Button -->
<buttons:SfButton x:Name="SearchButton" IsVisible="True" Command="{TemplateBinding SearchButtonClickedCommand}" Style="{StaticResource IconButtonStyle }"
Text="{StaticResource Search}" />
</StackLayout>
<!-- Content -->
<StackLayout>
<ContentPresenter />
</StackLayout>
</StackLayout>
</ControlTemplate>
Для каждой страницы содержимого, использующей этот шаблон ControlTemplate, мне нужно написать собственный BackToTitleClickedCommand и SearchButtonClickedCommand. Как привязать кнопку BackToTitle и SearchEntry к странице содержимого, чтобы я мог написать эти команды?
В модели представления моей страницы у меня есть следующее:
public Command SearchButtonClickedCommand
{
get;
set;
}
public Command BackToTitleClickedCommand
{
get;
set;
}
public CountriesGroupViewModel()
{
SearchButtonClickedCommand = new Command(() => ExecuteSearchButtonClickedCommand());
BackToTitleClickedCommand = new Command(() => ExecuteBackToTitleClickedCommand());
}
Кроме того, в эти команды мне нужно обновить кнопку BackToTitle и атрибуты SearchEntry. Однако они определены в App.xaml, поэтому не совсем уверены, как связать их на отдельной странице содержимого.
private void ExecuteDateButtonClickedCommand()
{
//need to alter Search Button Attributes
this.SearchButton.IsVisible = false;
...
}
private void ExecuteBackToTitleClickedCommand()
{
//similar to above
}
Прошу прощения, если это тривиально, только начал изучать мобильную разработку.