converter double -> étoile

Popup_qui_marche_pas
Anthony RICHARD 2 years ago
parent 452f2f1eb9
commit dcf50918d9

@ -2,6 +2,7 @@
<Application xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:Stim"
xmlns:conv="clr-namespace:Stim.Converter"
x:Class="Stim.App">
<Application.Resources>
<ResourceDictionary>
@ -9,7 +10,9 @@
<ResourceDictionary Source="Resources/Styles/Colors.xaml" />
<ResourceDictionary Source="Resources/Styles/Styles.xaml" />
</ResourceDictionary.MergedDictionaries>
<conv:DoubleToStar x:Key="DoubleToStar" EtoilePleine="etoile_pleine.png" EtoileMiPleine="etoile_mi_pleine.png" EtoileVide="etoile_vide.png"/>
<DataTemplate x:Key="tagsTemplate">
<Label Padding="5,0,0,0" Margin="0" Text="{Binding}"/>
</DataTemplate>
@ -28,12 +31,20 @@
</Border>
</DataTemplate>
<DataTemplate x:Key="reviewTemplate">
<VerticalStackLayout>
<HorizontalStackLayout> <!--CONVERTER-->
<Label Text="{Binding AuthorName}" FontSize="20"/>
</HorizontalStackLayout>
<Label Text="{Binding Text}"/>
</VerticalStackLayout>
<Border Margin="0, 5">
<VerticalStackLayout>
<HorizontalStackLayout>
<Label Text="{Binding AuthorName}" FontSize="20"/>
<Label Text="{Binding Rate}" FontSize="20"/>
<Image Style="{StaticResource star}" Source="{Binding Rate, Converter={StaticResource DoubleToStar}, ConverterParameter='1'}"/>
<Image Style="{StaticResource star}" Source="{Binding Rate, Converter={StaticResource DoubleToStar}, ConverterParameter='2'}"/>
<Image Style="{StaticResource star}" Source="{Binding Rate, Converter={StaticResource DoubleToStar}, ConverterParameter='3'}"/>
<Image Style="{StaticResource star}" Source="{Binding Rate, Converter={StaticResource DoubleToStar}, ConverterParameter='4'}"/>
<Image Style="{StaticResource star}" Source="{Binding Rate, Converter={StaticResource DoubleToStar}, ConverterParameter='5'}"/>
</HorizontalStackLayout>
<Label Text="{Binding Text}"/>
</VerticalStackLayout>
</Border>
</DataTemplate>
<DataTemplate x:Key="followTemplate">
<Border HeightRequest="150" Margin="10">

@ -5,7 +5,7 @@
Title="{Binding Name}"
Background="{StaticResource Secondary}">
<Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
@ -31,8 +31,13 @@
</Grid>
<Label Grid.Column="1" Grid.Row="3" Text="{Binding Lien}"/>
<HorizontalStackLayout Grid.Column="2" Grid.ColumnSpan="2" Grid.Row="3" x:Name="starsContainer" HorizontalOptions="End">
<HorizontalStackLayout Grid.Column="2" Grid.ColumnSpan="2" Grid.Row="3" HorizontalOptions="End">
<Label Padding="0,5,0,0" FontSize="25" Text="{Binding Average}"/>
<Image Style="{StaticResource star}" Source="{Binding Average, Converter={StaticResource DoubleToStar}, ConverterParameter='1'}"/>
<Image Style="{StaticResource star}" Source="{Binding Average, Converter={StaticResource DoubleToStar}, ConverterParameter='2'}"/>
<Image Style="{StaticResource star}" Source="{Binding Average, Converter={StaticResource DoubleToStar}, ConverterParameter='3'}"/>
<Image Style="{StaticResource star}" Source="{Binding Average, Converter={StaticResource DoubleToStar}, ConverterParameter='4'}"/>
<Image Style="{StaticResource star}" Source="{Binding Average, Converter={StaticResource DoubleToStar}, ConverterParameter='5'}"/>
</HorizontalStackLayout>
<VerticalStackLayout Grid.ColumnSpan="4" Grid.Row="4">

@ -15,24 +15,6 @@ public partial class DetailledPage : ContentPage
BindingContext = currentGame;
if (currentGame is null) Navigation.PopAsync();
else
{
AddStars(starsContainer, currentGame.Average);
}
}
public void AddStars(object sender, EventArgs e)
{
HorizontalStackLayout layout = sender as HorizontalStackLayout;
Review rev = layout.BindingContext as Review;
AddStars(layout, rev.Rate);
}
public static void AddStars(HorizontalStackLayout container, double rate)
{
for (int i = 0; i < (int)rate; i++) container.Children.Add(new Image { Source = "etoile_pleine.png", WidthRequest = 30 });
if ((int)rate != rate) container.Children.Add(new Image { Source = "etoile_mi_pleine.png", WidthRequest = 30 });
while (container.Children.Count != 6) container.Children.Add(new Image { Source = "etoile_vide.png", WidthRequest = 30 });
}
private async void GoToMainPage(object sender, EventArgs e)

@ -1,26 +1,24 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Globalization;
namespace Stim
namespace Stim.Converter
{
public class DoubleToStar : IValueConverter
{
public string EtoileVide { get; set; }
public string EtoileMiPleine { get; set; }
public string EtoilePleine { get; set; }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (parameter != null && parameter is string && !string.IsNullOrEmpty(parameter as string))
if (value is double && parameter is string)
{
string param = parameter as string;
double rate = double.Parse(param.Split('|')[0]);
int pos = int.Parse(param.Split('|')[0]);
double rate = double.Parse(value.ToString());
int pos = int.Parse(parameter as string);
if (pos <= rate ) return "etoile_pleine.png";
if (pos - 1 < rate && rate < pos) return "etoile_mi_plein.png";
if (pos <= rate) return EtoilePleine;
if (pos - 1 < rate && rate < pos) return EtoileMiPleine;
}
return "etoile_vide.png";
return EtoileVide;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)

Loading…
Cancel
Save