Max Mannstein 4478fa2457 Update visual assets and refactor codebase
This commit includes a complete replacement of the binary content of the image files, significantly updating the visual assets of the application to enhance user experience and align with new design standards.

Key changes include:
- Resetting session state for the subscription offer popup in `App.xaml.cs`.
- Replacing buttons with touch-friendly labels in `Step2ExternalControl.xaml` and `Step3Control.xaml`.
- Updating image sources and bindings in `WalkerListControl.xaml` to reflect premium subscription status.
- Adding a new converter class `PremiumToChatImageConverter` in `CommonConverters.cs`.
- Modifying various view models to manage premium user status and subscription offers.
- Enhancing UI layouts across multiple XAML files for improved visibility and functionality.
- Updating localized strings in `Text.Designer.cs` and incrementing the app version in `Info.plist`.

These changes aim to improve the overall functionality, maintainability, and user experience of the application.
2025-07-01 15:53:21 +02:00

878 lines
43 KiB
XML

<?xml version="1.0" encoding="utf-8" ?>
<ResourceDictionary
x:Class="gehGassiApp.Resources.Templates.ControlTemplates"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:enum="clr-namespace:gehGassiApp.ViewModels"
xmlns:i="clr-namespace:gehGassiApp.Constants"
xmlns:res="clr-namespace:gehGassiApp.Resources">
<ControlTemplate x:Key="MenuPageTemplate">
<Grid
x:Name="controlTemplateRootGrid"
Padding="{Binding ., Converter={StaticResource TabBarPaddingConverter}}"
BackgroundColor="{StaticResource Primary_White}"
HorizontalOptions="FillAndExpand"
RowDefinitions="{Binding ., Converter={StaticResource TabBarOuterRowDefinitionConverter}}"
VerticalOptions="FillAndExpand">
<!-- Navigations-Menü wenn statisch am oberen Ende -->
<Border
Grid.Row="0"
Margin="{OnPlatform Android='0,5,0,5',
iOS='0,0,0,5'}"
Padding="{OnPlatform Android='0,0,0,0',
iOS='16,0,16,0'}"
BackgroundColor="Transparent"
BindingContext="{TemplateBinding BindingContext}"
Content="{TemplateBinding TitleView}"
HorizontalOptions="Fill"
MinimumHeightRequest="40"
StrokeThickness="0"
VerticalOptions="StartAndExpand">
<Border.IsVisible>
<MultiBinding Converter="{StaticResource AllTrueMultiConverter}">
<Binding
Converter="{StaticResource IsNotNullToBooleanConverter}"
Path="TitleView"
Source="{RelativeSource TemplatedParent}" />
<Binding
Converter="{StaticResource InvertedBoolConverter}"
Path="BindingContext.NavigationHide"
Source="{RelativeSource TemplatedParent}" />
</MultiBinding>
</Border.IsVisible>
</Border>
<!--<Border
x:Name="permissionStatusBorder"
Grid.Row="1"
Style="{StaticResource PermissionStatusBorder}">
<Label Style="{StaticResource PermissionStatusLabel}" Text="{x:Static res:Text.Permission_Location_Error}" />
<Border.IsVisible>
<MultiBinding Converter="{StaticResource AllTrueMultiConverter}">
<Binding
Converter="{StaticResource PermissionsStatusToBoolConverter}"
Path="BindingContext.LocationPermissionStatus"
Source="{RelativeSource TemplatedParent}" />
<Binding Path="BindingContext.ShowPermissionStatus" Source="{RelativeSource TemplatedParent}" />
</MultiBinding>
</Border.IsVisible>
<Border.GestureRecognizers>
<TapGestureRecognizer Command="{TemplateBinding BindingContext.ShowPermissionsCommand}" />
</Border.GestureRecognizers>
</Border>-->
<ContentPresenter
x:Name="mainContentPresenter"
Grid.Row="2"
Margin="0"
Padding="0,0,0,0"
BackgroundColor="{StaticResource Primary_White}" />
<Grid
x:Name="snackbarGrid"
Grid.Row="2"
Margin="20,75,20,0"
InputTransparent="True"
VerticalOptions="StartAndExpand" />
<Border
Grid.Row="3"
Margin="-1,0,-1,-1"
Padding="0,5,0,0"
BackgroundColor="{StaticResource Primary_LightBlue}"
StrokeShape="RoundRectangle 8,8,0,0"
StrokeThickness="0">
<Grid
ColumnDefinitions="*,*,*,*,*"
HorizontalOptions="Fill"
RowDefinitions="*"
VerticalOptions="StartAndExpand">
<VerticalStackLayout
Grid.Column="0"
Margin="0,0,0,0"
HorizontalOptions="Fill"
VerticalOptions="StartAndExpand">
<Image HeightRequest="28">
<Image.Source>
<FontImageSource
x:Name="walksImageSource"
FontFamily="IconMoon"
Glyph="{x:Static i:IconsMoon.Icon_Paws}"
Color="{StaticResource Primary_DarkBlue}" />
</Image.Source>
<Image.Triggers>
<DataTrigger
Binding="{TemplateBinding BindingContext.SelectedMenu}"
TargetType="Image"
Value="{x:Static enum:MenuSelected.Walks}">
<Setter TargetName="walksImageSource" Property="FontImageSource.Color" Value="{StaticResource Primary_White}" />
</DataTrigger>
</Image.Triggers>
</Image>
<Label
Margin="0,4,0,0"
HorizontalOptions="Center"
Style="{StaticResource FooterLabel}"
Text="{x:Static res:Text.Button_Walks}" />
<VerticalStackLayout.GestureRecognizers>
<TapGestureRecognizer Command="{TemplateBinding BindingContext.NavigateCommand}" CommandParameter="{x:Static enum:MenuSelected.Walks}" />
</VerticalStackLayout.GestureRecognizers>
</VerticalStackLayout>
<Ellipse
Grid.Row="0"
Grid.Column="0"
Margin="0,5,20,0"
Fill="{StaticResource Alert_Red}"
HeightRequest="10"
HorizontalOptions="End"
IsVisible="{TemplateBinding BindingContext.HasRequested}"
VerticalOptions="Start"
WidthRequest="10" />
<VerticalStackLayout
Grid.Column="1"
Margin="0,0,0,0"
HorizontalOptions="Fill"
VerticalOptions="StartAndExpand">
<Image HeightRequest="28">
<Image.Source>
<FontImageSource
x:Name="messagesImageSource"
FontFamily="IconMoon"
Glyph="{x:Static i:IconsMoon.Icon_Chat_Filled}"
Color="{StaticResource Primary_DarkBlue}" />
</Image.Source>
<Image.Triggers>
<DataTrigger
Binding="{TemplateBinding BindingContext.SelectedMenu}"
TargetType="Image"
Value="{x:Static enum:MenuSelected.Messages}">
<Setter TargetName="messagesImageSource" Property="FontImageSource.Color" Value="{StaticResource Primary_White}" />
</DataTrigger>
</Image.Triggers>
</Image>
<Label
Margin="0,4,0,0"
HorizontalOptions="Center"
Style="{StaticResource FooterLabel}"
Text="{x:Static res:Text.Button_Messages}" />
<VerticalStackLayout.GestureRecognizers>
<TapGestureRecognizer Command="{TemplateBinding BindingContext.NavigateCommand}" CommandParameter="{x:Static enum:MenuSelected.Messages}" />
</VerticalStackLayout.GestureRecognizers>
</VerticalStackLayout>
<Ellipse
Grid.Row="0"
Grid.Column="1"
Margin="0,5,20,0"
Fill="{StaticResource Alert_Red}"
HeightRequest="10"
HorizontalOptions="End"
IsVisible="{TemplateBinding BindingContext.HasUnreadMessages}"
VerticalOptions="Start"
WidthRequest="10" />
<VerticalStackLayout
Grid.Column="2"
Margin="0,0,0,0"
HorizontalOptions="Fill"
IsVisible="{TemplateBinding BindingContext.IsDogOwnerMode}"
VerticalOptions="StartAndExpand">
<Image HeightRequest="28">
<Image.Source>
<FontImageSource
x:Name="homeImageSource"
FontFamily="IconFont"
Glyph="home"
Color="{StaticResource Primary_DarkBlue}" />
</Image.Source>
<Image.Triggers>
<DataTrigger
Binding="{TemplateBinding BindingContext.SelectedMenu}"
TargetType="Image"
Value="{x:Static enum:MenuSelected.Home}">
<Setter TargetName="homeImageSource" Property="FontImageSource.Color" Value="{StaticResource Primary_White}" />
</DataTrigger>
</Image.Triggers>
</Image>
<Label
Margin="0,4,0,0"
HorizontalOptions="Center"
Style="{StaticResource FooterLabel}"
Text="{x:Static res:Text.Button_Search}" />
<VerticalStackLayout.GestureRecognizers>
<TapGestureRecognizer Command="{TemplateBinding BindingContext.NavigateCommand}" CommandParameter="{x:Static enum:MenuSelected.Home}" />
</VerticalStackLayout.GestureRecognizers>
</VerticalStackLayout>
<VerticalStackLayout
Grid.Column="2"
Margin="0,0,0,0"
HorizontalOptions="Fill"
IsVisible="{TemplateBinding BindingContext.IsDogWalkerMode}"
VerticalOptions="StartAndExpand">
<Image HeightRequest="28">
<Image.Source>
<FontImageSource
x:Name="homeWalkerImageSource"
FontFamily="IconFont"
Glyph="home"
Color="{StaticResource Primary_DarkBlue}" />
</Image.Source>
<Image.Triggers>
<DataTrigger
Binding="{TemplateBinding BindingContext.SelectedMenu}"
TargetType="Image"
Value="{x:Static enum:MenuSelected.HomeWalker}">
<Setter TargetName="homeWalkerImageSource" Property="FontImageSource.Color" Value="{StaticResource Primary_White}" />
</DataTrigger>
</Image.Triggers>
</Image>
<Label
Margin="0,4,0,0"
HorizontalOptions="Center"
Style="{StaticResource FooterLabel}"
Text="{x:Static res:Text.Button_Jobs}" />
<VerticalStackLayout.GestureRecognizers>
<TapGestureRecognizer Command="{TemplateBinding BindingContext.NavigateCommand}" CommandParameter="{x:Static enum:MenuSelected.HomeWalker}" />
</VerticalStackLayout.GestureRecognizers>
</VerticalStackLayout>
<VerticalStackLayout
Grid.Column="3"
Margin="0,0,0,0"
HorizontalOptions="Fill"
VerticalOptions="Fill">
<Image HeightRequest="28">
<Image.Source>
<FontImageSource
x:Name="offersImageSource"
FontFamily="IconMoon"
Glyph="{x:Static i:IconsMoon.Icon_Offers_Filled}"
Color="{StaticResource Primary_DarkBlue}" />
</Image.Source>
<Image.Triggers>
<DataTrigger
Binding="{TemplateBinding BindingContext.SelectedMenu}"
TargetType="Image"
Value="{x:Static enum:MenuSelected.Offers}">
<Setter TargetName="offersImageSource" Property="FontImageSource.Color" Value="{StaticResource Primary_White}" />
</DataTrigger>
</Image.Triggers>
</Image>
<Label
Margin="0,4,0,0"
HorizontalOptions="Center"
Style="{StaticResource FooterLabel}"
Text="{x:Static res:Text.Button_Advertisement}" />
<VerticalStackLayout.GestureRecognizers>
<TapGestureRecognizer Command="{TemplateBinding BindingContext.NavigateCommand}" CommandParameter="{x:Static enum:MenuSelected.Offers}" />
</VerticalStackLayout.GestureRecognizers>
</VerticalStackLayout>
<VerticalStackLayout
Grid.Column="4"
Margin="0,0,0,0"
HorizontalOptions="Fill"
VerticalOptions="Fill">
<Image HeightRequest="28">
<Image.Source>
<FontImageSource
x:Name="moreImageSource"
FontFamily="IconMoon"
Glyph="{x:Static i:IconsMoon.Icon_More}"
Color="{StaticResource Primary_DarkBlue}" />
</Image.Source>
<Image.Triggers>
<DataTrigger
Binding="{TemplateBinding BindingContext.SelectedMenu}"
TargetType="Image"
Value="{x:Static enum:MenuSelected.More}">
<Setter TargetName="moreImageSource" Property="FontImageSource.Color" Value="{StaticResource Primary_White}" />
</DataTrigger>
</Image.Triggers>
</Image>
<Label
Margin="0,4,0,0"
HorizontalOptions="Center"
Style="{StaticResource FooterLabel}"
Text="{x:Static res:Text.Button_More}" />
<VerticalStackLayout.GestureRecognizers>
<TapGestureRecognizer Command="{TemplateBinding BindingContext.NavigateCommand}" CommandParameter="{x:Static enum:MenuSelected.More}" />
</VerticalStackLayout.GestureRecognizers>
</VerticalStackLayout>
<Ellipse
Grid.Row="0"
Grid.Column="4"
Margin="0,5,20,0"
Fill="{StaticResource Alert_Red}"
HeightRequest="10"
HorizontalOptions="End"
IsVisible="{TemplateBinding BindingContext.HasUnreadSystemMessages}"
VerticalOptions="Start"
WidthRequest="10" />
</Grid>
</Border>
<Border
Grid.Row="0"
Grid.RowSpan="4"
BackgroundColor="{StaticResource Primary_White}"
HorizontalOptions="Fill"
IsVisible="{TemplateBinding BindingContext.IsResuming}"
Opacity="0.75"
StrokeThickness="0"
VerticalOptions="Fill">
<ActivityIndicator
HorizontalOptions="Center"
IsRunning="{TemplateBinding BindingContext.IsResuming}"
IsVisible="{TemplateBinding BindingContext.IsResuming}"
Scale="1"
VerticalOptions="Center" />
<Border.GestureRecognizers>
<TapGestureRecognizer Command="{TemplateBinding BindingContext.NoActionCommand}" />
</Border.GestureRecognizers>
</Border>
<!-- Navigations-Menü wenn dynamisch transparent am oberen Ende -->
<Border
Grid.Row="0"
Grid.RowSpan="4"
Margin="{OnPlatform Android='0,5,0,5',
iOS='0,5,0,0'}"
Padding="{OnPlatform Android='0,0,0,0',
iOS='16,0,16,0'}"
BackgroundColor="Transparent"
BindingContext="{TemplateBinding BindingContext}"
Content="{TemplateBinding TitleViewFloating}"
HorizontalOptions="Fill"
StrokeThickness="0"
VerticalOptions="StartAndExpand">
<Border.IsVisible>
<MultiBinding Converter="{StaticResource AllTrueMultiConverter}">
<Binding
Converter="{StaticResource IsNotNullToBooleanConverter}"
Path="TitleViewFloating"
Source="{RelativeSource TemplatedParent}" />
<Binding
Converter="{StaticResource InvertedBoolConverter}"
Path="BindingContext.NavigationHide"
Source="{RelativeSource TemplatedParent}" />
</MultiBinding>
</Border.IsVisible>
</Border>
<Border
Grid.Row="0"
Grid.RowSpan="4"
Margin="20,50,20,0"
HorizontalOptions="CenterAndExpand"
Style="{StaticResource ErrorBorder}"
VerticalOptions="StartAndExpand">
<Label
HorizontalOptions="CenterAndExpand"
HorizontalTextAlignment="Center"
Style="{StaticResource BodySMedium_White}"
Text="{TemplateBinding BindingContext.ErrorMessage}"
VerticalOptions="StartAndExpand" />
<Border.IsVisible>
<MultiBinding Converter="{StaticResource AllTrueMultiConverter}">
<Binding Path="BindingContext.HasError" Source="{RelativeSource TemplatedParent}" />
<Binding
Converter="{StaticResource IsNotNullOrEmptyToBooleanConverter}"
Path="BindingContext.ErrorMessage"
Source="{RelativeSource TemplatedParent}" />
<Binding Path="BindingContext.IsNotLoading" Source="{RelativeSource TemplatedParent}" />
</MultiBinding>
</Border.IsVisible>
</Border>
<Border
x:Name="bottomSheetContainer"
Grid.Row="0"
Grid.RowSpan="4"
BackgroundColor="Transparent"
BindingContext="{TemplateBinding BindingContext}"
Content="{TemplateBinding BottomSheet}"
HorizontalOptions="Fill"
InputTransparent="True"
StrokeThickness="0"
VerticalOptions="Fill">
<Border.IsVisible>
<MultiBinding Converter="{StaticResource AllTrueMultiConverter}">
<Binding
Converter="{StaticResource IsNotNullToBooleanConverter}"
Path="BottomSheet"
Source="{RelativeSource TemplatedParent}" />
</MultiBinding>
</Border.IsVisible>
</Border>
<Border
x:Name="mandatoryUpdateContainer"
Grid.Row="0"
Grid.RowSpan="4"
BackgroundColor="{StaticResource Primary_Black}"
HorizontalOptions="Fill"
InputTransparent="False"
IsVisible="{TemplateBinding BindingContext.AppVersionMandatory}"
Opacity="0.75"
StrokeThickness="0"
VerticalOptions="Fill">
<Border.GestureRecognizers>
<TapGestureRecognizer Command="{TemplateBinding BindingContext.NoActionCommand}" />
</Border.GestureRecognizers>
</Border>
<VerticalStackLayout
Grid.Row="0"
Grid.RowSpan="4"
Padding="20"
HorizontalOptions="CenterAndExpand"
IsVisible="{TemplateBinding BindingContext.AppVersionMandatory}"
Spacing="20"
VerticalOptions="CenterAndExpand">
<Label
Margin="0,24,0,12"
HorizontalOptions="CenterAndExpand"
HorizontalTextAlignment="Center"
Style="{StaticResource BodyCaption_White}"
Text="{TemplateBinding BindingContext.AppVersionText}" />
<Button
Margin="{StaticResource MarginSmall}"
Command="{TemplateBinding BindingContext.UpdateCommand}"
HorizontalOptions="CenterAndExpand"
Style="{StaticResource SecondaryButton}"
Text="{Static res:Text.Button_Update}" />
<Label
Margin="0,0,0,12"
HorizontalOptions="CenterAndExpand"
HorizontalTextAlignment="Center"
Style="{StaticResource BodyCaption_White}"
Text="{Static res:Text.Common_Update_Info_Mandatory}" />
</VerticalStackLayout>
<Border
x:Name="subscriptionMissingContainer"
Grid.Row="0"
Grid.RowSpan="4"
Margin="{Binding ., Converter={StaticResource SubscriptionOverlayMarginConverter}}"
BackgroundColor="{StaticResource Primary_Black}"
HorizontalOptions="Fill"
InputTransparent="False"
IsVisible="{TemplateBinding BindingContext.SubscriptionMissing}"
Opacity="0.95"
StrokeThickness="0"
VerticalOptions="Fill">
<Border.GestureRecognizers>
<TapGestureRecognizer Command="{TemplateBinding BindingContext.NoActionCommand}" />
</Border.GestureRecognizers>
</Border>
<Border
Grid.Row="0"
Grid.RowSpan="4"
Padding="20"
BackgroundColor="{StaticResource Primary_LightBlue_Dark}"
HeightRequest="350"
HorizontalOptions="CenterAndExpand"
IsVisible="{TemplateBinding BindingContext.SubscriptionMissing}"
StrokeShape="RoundRectangle 20"
StrokeThickness="0"
WidthRequest="350">
<!-- Drop Shadow Effect -->
<Border.Shadow>
<Shadow
Brush="{AppThemeBinding Light={StaticResource Grey_Dark},
Dark={StaticResource Grey_Dark_Dark}}"
Opacity="0.3"
Radius="12"
Offset="0,6" />
</Border.Shadow>
<Grid RowDefinitions="Auto,*,Auto">
<!-- Close Button -->
<Button
Grid.Row="0"
Margin="-10"
Background="Transparent"
Command="{TemplateBinding BindingContext.NavigateBackCommand}"
FontAttributes="Bold"
FontFamily="IconFont"
FontSize="40"
HorizontalOptions="End"
Text="close"
TextColor="White"
VerticalOptions="Start" />
<!-- Content Bereich -->
<VerticalStackLayout
Grid.Row="1"
Margin="0,-30,0,20"
HorizontalOptions="Center"
Spacing="4"
VerticalOptions="Center">
<!-- Icon - Gestapelte Napf-Icons -->
<Image
Margin="0,0,0,-10"
HeightRequest="120"
HorizontalOptions="Center"
Source="coins.png"
VerticalOptions="Center"
WidthRequest="120" />
<!-- Titel -->
<Label
FontAttributes="Bold"
HorizontalTextAlignment="Center"
Style="{StaticResource H2_Blue}"
Text="Abo erforderlich"
TextColor="{AppThemeBinding Light={StaticResource Primary_DarkBlue},
Dark={StaticResource Primary_DarkBlue_Dark}}" />
<!-- Untertitel -->
<VerticalStackLayout Spacing="4">
<Label
HorizontalTextAlignment="Center"
Style="{StaticResource BodyM}"
Text="Jetzt Abo abschließen &amp;"
TextColor="{AppThemeBinding Light={StaticResource Primary_DarkBlue},
Dark={StaticResource Primary_DarkBlue_Dark}}" />
<HorizontalStackLayout HorizontalOptions="Center" Spacing="4">
<Label
FontAttributes="Bold"
FontFamily="InterSemiBold"
Style="{StaticResource BodyM}"
Text="STRAYZ"
TextColor="{AppThemeBinding Light={StaticResource Primary_DarkBlue},
Dark={StaticResource Primary_DarkBlue_Dark}}" />
<Label
Style="{StaticResource BodyM}"
Text="Bio-Hundefutter"
TextColor="{AppThemeBinding Light={StaticResource Primary_DarkBlue},
Dark={StaticResource Primary_DarkBlue_Dark}}" />
</HorizontalStackLayout>
<Label
FontAttributes="Bold"
FontFamily="InterSemiBold"
HorizontalTextAlignment="Center"
Style="{StaticResource BodyM}"
Text="gratis sichern!"
TextColor="{AppThemeBinding Light={StaticResource Primary_DarkBlue},
Dark={StaticResource Primary_DarkBlue_Dark}}" />
</VerticalStackLayout>
</VerticalStackLayout>
<!-- Action Button -->
<Button
Grid.Row="2"
Margin="{StaticResource MarginSmall}"
Command="{TemplateBinding BindingContext.SubscriptionsCommand}"
Text="Abo holen" />
</Grid>
</Border>
<!--<VerticalStackLayout
Grid.Row="0"
Grid.RowSpan="4"
Padding="20"
HorizontalOptions="CenterAndExpand"
IsVisible="{TemplateBinding BindingContext.SubscriptionMissing}"
Spacing="20"
VerticalOptions="CenterAndExpand">
<Label
Margin="0,24,0,12"
HorizontalOptions="CenterAndExpand"
HorizontalTextAlignment="Center"
Style="{StaticResource H1_White}"
Text="{Static res:Text.Common_Subscription_Title}" />
<Button
Margin="{StaticResource MarginSmall}"
Command="{TemplateBinding BindingContext.SubscriptionsCommand}"
HorizontalOptions="CenterAndExpand"
Style="{StaticResource SecondaryButton}"
Text="{Static res:Text.Button_Subscriptions}" />
<Label
Margin="0,0,0,12"
HorizontalOptions="CenterAndExpand"
HorizontalTextAlignment="Center"
Style="{StaticResource BodyCaption_White}"
Text="{Static res:Text.Common_Subscription_Info}" />
<Button
Command="{TemplateBinding BindingContext.NavigateBackCommand}"
Style="{StaticResource LinkButton}"
Text="{Static res:Text.Button_Back}"
TextColor="{StaticResource Primary_White}" />
</VerticalStackLayout>-->
</Grid>
</ControlTemplate>
<ControlTemplate x:Key="AccountPageTemplate">
<Grid
Padding="0"
BackgroundColor="{StaticResource Primary_White}"
HorizontalOptions="FillAndExpand"
RowDefinitions="Auto,Auto,*"
VerticalOptions="FillAndExpand">
<!-- Navigations-Menü wenn statisch am oberen Ende -->
<Border
Grid.Row="0"
Margin="{OnPlatform Android='0,5,0,5',
iOS='0,0,0,5'}"
Padding="{OnPlatform Android='0,0,0,0',
iOS='16,0,16,0'}"
BackgroundColor="Transparent"
BindingContext="{TemplateBinding BindingContext}"
Content="{TemplateBinding TitleView}"
HorizontalOptions="Fill"
StrokeThickness="0"
VerticalOptions="StartAndExpand">
<Border.IsVisible>
<MultiBinding Converter="{StaticResource AllTrueMultiConverter}">
<Binding
Converter="{StaticResource IsNotNullToBooleanConverter}"
Path="TitleView"
Source="{RelativeSource TemplatedParent}" />
<Binding
Converter="{StaticResource InvertedBoolConverter}"
Path="BindingContext.NavigationHide"
Source="{RelativeSource TemplatedParent}" />
</MultiBinding>
</Border.IsVisible>
</Border>
<Border
Grid.Row="1"
Margin="20,0,20,0"
HorizontalOptions="CenterAndExpand"
IsVisible="{TemplateBinding BindingContext.HasError}"
Style="{StaticResource ErrorBorder}"
VerticalOptions="StartAndExpand">
<Label
HorizontalOptions="CenterAndExpand"
HorizontalTextAlignment="Center"
Style="{StaticResource BodySMedium_White}"
Text="{TemplateBinding BindingContext.ErrorMessage}"
VerticalOptions="StartAndExpand" />
</Border>
<ContentPresenter
x:Name="mainContentPresenter"
Grid.Row="2"
Margin="0"
Padding="0,0,0,0"
BackgroundColor="{StaticResource Primary_White}" />
<Border
Grid.Row="0"
Grid.RowSpan="3"
BackgroundColor="{StaticResource Primary_White}"
HorizontalOptions="Fill"
IsVisible="{TemplateBinding BindingContext.IsResuming}"
Opacity="0.75"
StrokeThickness="0"
VerticalOptions="Fill">
<ActivityIndicator
HorizontalOptions="Center"
IsRunning="{TemplateBinding BindingContext.IsResuming}"
IsVisible="{TemplateBinding BindingContext.IsResuming}"
Scale="1"
VerticalOptions="Center" />
<Border.GestureRecognizers>
<TapGestureRecognizer Command="{TemplateBinding BindingContext.NoActionCommand}" />
</Border.GestureRecognizers>
</Border>
<!-- Navigations-Menü wenn dynamisch transparent am oberen Ende -->
<Border
Grid.Row="0"
Grid.RowSpan="3"
Margin="{OnPlatform Android='0,5,0,5',
iOS='0,0,0,0'}"
Padding="{OnPlatform Android='0,0,0,0',
iOS='16,0,16,0'}"
BackgroundColor="Transparent"
BindingContext="{TemplateBinding BindingContext}"
Content="{TemplateBinding TitleViewFloating}"
HorizontalOptions="Fill"
StrokeThickness="0"
VerticalOptions="StartAndExpand">
<Border.IsVisible>
<MultiBinding Converter="{StaticResource AllTrueMultiConverter}">
<Binding
Converter="{StaticResource IsNotNullToBooleanConverter}"
Path="TitleViewFloating"
Source="{RelativeSource TemplatedParent}" />
<Binding
Converter="{StaticResource InvertedBoolConverter}"
Path="BindingContext.NavigationHide"
Source="{RelativeSource TemplatedParent}" />
</MultiBinding>
</Border.IsVisible>
</Border>
<Border
x:Name="bottomSheetContainer"
Grid.Row="0"
Grid.RowSpan="3"
BackgroundColor="Transparent"
BindingContext="{TemplateBinding BindingContext}"
Content="{TemplateBinding BottomSheet}"
HorizontalOptions="Fill"
InputTransparent="True"
StrokeThickness="0"
VerticalOptions="Fill">
<Border.IsVisible>
<MultiBinding Converter="{StaticResource AllTrueMultiConverter}">
<Binding
Converter="{StaticResource IsNotNullToBooleanConverter}"
Path="BottomSheet"
Source="{RelativeSource TemplatedParent}" />
</MultiBinding>
</Border.IsVisible>
</Border>
</Grid>
</ControlTemplate>
<ControlTemplate x:Key="ButtonGroupTemplate">
<Grid>
<Border
x:Name="border"
Padding="10,8"
Style="{StaticResource EntryBorder}">
<Label
x:Name="label"
FontAttributes="{TemplateBinding FontAttributes}"
FontSize="{TemplateBinding FontSize}"
HorizontalOptions="CenterAndExpand"
LineBreakMode="TailTruncation"
Text="{TemplateBinding Value,
Converter={StaticResource EnumToTextConverter}}"
VerticalOptions="CenterAndExpand" />
</Border>
<VisualStateManager.VisualStateGroups>
<VisualStateGroupList>
<VisualStateGroup x:Name="CheckedStates">
<VisualState x:Name="Checked">
<VisualState.Setters>
<Setter TargetName="label" Property="Label.TextColor" Value="{StaticResource Primary_White}" />
<Setter TargetName="label" Property="Label.FontSize" Value="{StaticResource FontLabelM}" />
<Setter TargetName="border" Property="Border.BackgroundColor" Value="{StaticResource Primary_DarkBlue}" />
<Setter TargetName="border" Property="Border.Stroke" Value="{StaticResource Primary_DarkBlue}" />
<Setter TargetName="border" Property="Border.StrokeThickness" Value="1" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Unchecked">
<VisualState.Setters>
<Setter TargetName="label" Property="Label.TextColor" Value="{StaticResource Primary_DarkBlue}" />
<Setter TargetName="label" Property="Label.FontSize" Value="{StaticResource FontLabelM}" />
<Setter TargetName="border" Property="Border.BackgroundColor" Value="{StaticResource Primary_White}" />
<Setter TargetName="border" Property="Border.Stroke" Value="{StaticResource Grey_System}" />
<Setter TargetName="border" Property="Border.StrokeThickness" Value="1" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateGroupList>
</VisualStateManager.VisualStateGroups>
</Grid>
</ControlTemplate>
<ControlTemplate x:Key="ButtonGroupSmallTemplate">
<Grid>
<Border
x:Name="border"
Padding="10,8"
Style="{StaticResource LightBlueBorder}">
<Label
x:Name="label"
FontSize="{StaticResource FontMenu}"
HorizontalOptions="CenterAndExpand"
LineBreakMode="TailTruncation"
Text="{TemplateBinding Value,
Converter={StaticResource EnumToTextConverter}}"
TextColor="{StaticResource Primary_DarkBlue}"
VerticalOptions="CenterAndExpand" />
</Border>
<VisualStateManager.VisualStateGroups>
<VisualStateGroupList>
<VisualStateGroup x:Name="CheckedStates">
<VisualState x:Name="Checked">
<VisualState.Setters>
<Setter TargetName="label" Property="Label.TextColor" Value="{StaticResource Primary_White}" />
<Setter TargetName="label" Property="Label.FontSize" Value="{StaticResource FontMenu}" />
<Setter TargetName="border" Property="Border.BackgroundColor" Value="{StaticResource Primary_DarkBlue}" />
<Setter TargetName="border" Property="Border.Stroke" Value="{StaticResource Primary_DarkBlue}" />
<Setter TargetName="border" Property="Border.StrokeThickness" Value="1" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Unchecked">
<VisualState.Setters>
<Setter TargetName="label" Property="Label.TextColor" Value="{StaticResource Grey_Dark}" />
<Setter TargetName="label" Property="Label.FontSize" Value="{StaticResource FontMenu}" />
<Setter TargetName="border" Property="Border.BackgroundColor" Value="{StaticResource Primary_White}" />
<Setter TargetName="border" Property="Border.Stroke" Value="{StaticResource Grey_System}" />
<Setter TargetName="border" Property="Border.StrokeThickness" Value="1" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateGroupList>
</VisualStateManager.VisualStateGroups>
</Grid>
</ControlTemplate>
<ControlTemplate x:Key="RoundImageTemplateAndroid">
<Border
BackgroundColor="{TemplateBinding BorderBackgroundColor}"
HeightRequest="{TemplateBinding BorderHeight}"
Opacity="{TemplateBinding BorderOpacity}"
Stroke="{TemplateBinding BorderStroke}"
StrokeShape="{TemplateBinding BorderStrokeShape}"
StrokeThickness="{TemplateBinding BorderStrokeThickness}"
WidthRequest="{TemplateBinding BorderWidth}">
<Image
Aspect="{TemplateBinding Aspect}"
HeightRequest="{TemplateBinding ImageHeight}"
Opacity="{TemplateBinding ImageOpacity}"
Source="{TemplateBinding ImageSource}"
WidthRequest="{TemplateBinding ImageWidth}" />
</Border>
</ControlTemplate>
<ControlTemplate x:Key="RoundImageTemplateIos">
<Frame
BackgroundColor="{TemplateBinding BorderBackgroundColor}"
BorderColor="{TemplateBinding BorderStroke}"
CornerRadius="{TemplateBinding CornerRadius}"
HeightRequest="{TemplateBinding BorderHeight}"
IsClippedToBounds="True"
WidthRequest="{TemplateBinding BorderWidth}">
<Image
Aspect="{TemplateBinding Aspect}"
HeightRequest="{TemplateBinding ImageHeight}"
Opacity="{TemplateBinding ImageOpacity}"
Source="{TemplateBinding ImageSource}"
WidthRequest="{TemplateBinding ImageWidth}" />
</Frame>
</ControlTemplate>
</ResourceDictionary>