RatingView

O .NET MAUI Community Toolkit RatingView é um ItemTemplate projetado para fornecer aos desenvolvedores um mecanismo de classificação flexível e personalizável, semelhante àqueles usados em plataformas de revisão e comentários populares.

Sintaxe

Incluindo o namespace XAML

Para usar o kit de ferramentas no XAML, o xmlns a seguir precisa ser adicionado à sua página ou exibição:

xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"

Portanto, o seguinte:

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">

</ContentPage>

Seria modificado para incluir o xmlns da seguinte maneira:

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">

</ContentPage>

Usando o RatingView

O exemplo a seguir mostra como criar um RatingView:

Captura de tela de um exemplo de RatingView

<ContentPage
	x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
	xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
	xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
	xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
	<VerticalStackLayout>
		<toolkit:RatingView
			EmptyShapeColor="White"
			FillColor="Blue"
			FillOption ="Shape"
			IsReadOnly="False"
			ShapePadding="3,7,7,3"
			ShapeDiameter="37"
			MaximumRating="5"
			Rating="4.5"
			Shape="Star"
			ShapeBorderColor="Red"
			ShapeBorderThickness="1"
			Spacing="3" />
	</VerticalStackLayout>
</ContentPage>

O código C# equivalente é:

using CommunityToolkit.Maui.Views;

partial class MyPage : ContentPage
{
	public MyPage()
	{
		RatingView ratingView = new()
		{
			EmptyShapeColor = Colors.White,
			FillColor = Colors.Blue,
			FillOption = RatingViewFillOption.Shape,
			IsReadOnly = false,
			ShapePadding = new Thickness(3,7,7,3),
			ShapeDiameter = 37,
			MaximumRating = 5,
			Rating = 4.5,
			Shape = RatingViewShape.Star,
			ShapeBorderColor = Colors.Red,
			ShapeBorderThickness = 1,
			Spacing = 3,
		};

		Content = ratingView;
	}
}

Propriedades

Property Tipo Descrição
CustomShapePath string Obtém ou define o caminho SVG para uma forma de exibição de classificação personalizada. Esta é uma propriedade vinculável.
EmptyShapeColor Color Obtém ou define a cor que é aplicada à forma de classificação não preenchida (vazia). O valor padrão é Transparent. Esta é uma propriedade vinculável.
FillColor Color Obtém ou define a cor do preenchimento usado para exibir a classificação atual. Defina FillOption para aplicar essa cor a RatingViewFillOption.Background ou RatingViewFillOption.Shape. O valor padrão é Amarelo. Esta é uma propriedade vinculável.
IsReadOnly bool Obtém se esse layout é somente leitura. O valor padrão é false. Esta é uma propriedade vinculável.
Forma RatingViewShape Obtém ou define o formato do item de avaliação. A propriedade é do tipo RatingViewShape e é uma enumeração. O valor padrão é Star. Esta é uma propriedade vinculável.
Diâmetro da forma double Obtém ou define o diâmetro da forma em pontos. O valor padrão é 20.
Classificação máxima int Obtém ou define o número máximo de classificações. O intervalo desse valor é de 1 a 25; o valor padrão é 5. Esta é uma propriedade vinculável.
Classificação alterada EventHandler<RatingChangedEventArgs> O evento ocorre quando a classificação é alterada.
FillOption RatingViewFillOption Obtém ou define o elemento a ser preenchido quando uma Classificação é definida. A propriedade é do tipo RatingViewFillOption e é uma enumeração. O valor padrão dessa propriedade é RatingViewFillOption.Shape. Esta é uma propriedade vinculável.
Pontuação double Obtém ou define um valor que indica o valor de classificação atual, permitindo classificações predefinidas (por exemplo, de dados armazenados ou de entrada do usuário anterior) e atualizações durante o runtime à medida que o usuário interage com o controle. O valor padrão é 0. Esta é uma propriedade vinculável.
ShapeBorderColor Color Obtém ou define a cor da borda do formato do item de avaliação. O valor padrão disso é Grey. Esta é uma propriedade vinculável.
Espessura da borda da forma Thickness Obtém ou define a espessura da borda da forma do item de classificação. O valor padrão é uma Espessura com todos os valores definidos como 1. Esta é uma propriedade vinculável.

Tip

Propriedades de classe base adicionais podem ser encontradas na classe HorizontalStackLayout.

Definir caminho de formato personalizado

A CustomShapePath propriedade é uma string que permite a definição de caminhos SVG personalizados. Esse recurso permite que os desenvolvedores implementem formas SVG exclusivas, como símbolos distintos, como itens de classificação.

Importante

CustomShapePath é usado somente quando a Shape propriedade é definida como Shape.Custom. A configuração Shape.Custom quando CustomShapePath for nula gerará um InvalidOperationException: Não é possível desenhar RatingViewShape.Custom porque CustomShapePath é nulo. Forneça um caminho SVG para CustomShapePath.

O exemplo a seguir define as propriedades personalizadas e de formato:

Captura de tela de um exemplo de forma personalizada do RatingView

<toolkit:RatingView
	CustomShapePath ="M 12 0C5.388 0 0 5.388 0 12s5.388 12 12 12 12-5.38 12-12c0-6.612-5.38-12-12-12z"
	Shape="Custom" />

O código C# equivalente é:

RatingView ratingView = new()
{
	CustomShapePath = "M 12 0C5.388 0 0 5.388 0 12s5.388 12 12 12 12-5.38 12-12c0-6.612-5.38-12-12-12z",
	Shape = RatingViewShape.Custom,
};

Para obter mais informações sobre formas personalizadas, consulte Shapes.Path.

Definir cor de forma vazia

A EmptyShapeColor propriedade é uma Color para as formas de classificação não preenchidas (vazias). Isso permite uma diferenciação visual clara entre formas classificadas e não avaliadas.

O exemplo a seguir define a propriedade de cor vazia:

<toolkit:RatingView
	EmptyShapeColor="Grey" />

O código C# equivalente é:

RatingView ratingView = new()
{
	EmptyShapeColor = Colors.Grey,
};

Definir cor de preenchimento (avaliada)

A propriedade FillColor é uma Color que será aplicada à parte preenchida (avaliada) de cada forma, oferecendo flexibilidade para definir a estética visual dos itens de avaliação quando selecionados pelo usuário. Use FillOption para aplicar essa cor ao RatingViewFillOption.Background .RatingViewFillOption.Shape

O exemplo a seguir define a propriedade de cor de preenchimento:

<toolkit:RatingView
	FillColor="Green" />

O código C# equivalente é:

RatingView ratingView = new()
{
	FillColor = Colors.Green,
};

O conjunto é somente leitura

A propriedade IsReadOnly é uma bool que permitirá ou impedirá que o usuário modifique o valor Rating ao tocar em RatingView.

O exemplo a seguir define a propriedade is read-only:

<toolkit:RatingView
	IsReadOnly="True" />

O código C# equivalente é:

RatingView readOnlyRatingView = new()
{
	IsReadOnly = True,
};

Definir preenchimento de forma

A propriedade ShapePadding é um Thickness para o espaçamento entre o controle de avaliação e as formas correspondentes, permitindo um controle mais preciso sobre a aparência e o layout dessas formas.

O exemplo a seguir define a propriedade de preenchimento do item:

<toolkit:RatingView
	ShapePadding="3, 7, 7, 3" />

O código C# equivalente é:

RatingView ratingView = new()
{
	ShapePadding = new Tickness(3, 7, 7, 3),
};

Definir o diâmetro da forma

A propriedade ShapeDiameter é um(a) double que personaliza o tamanho da forma para se adequar ao design geral do aplicativo, oferecendo flexibilidade para adaptar o controle a vários layouts de interface do usuário.

O exemplo a seguir define a propriedade padding do item:

<toolkit:RatingView
	ShapeDiameter="37" />

O código C# equivalente é:

RatingView ratingView = new()
{
	ShapeDiameter = 37,
};

Definir classificação máxima

A MaximumRating propriedade é uma int para definir o número total de itens (por exemplo, estrelas, corações, etc., ou formas personalizadas) disponíveis para classificação. Isso permite classificações de qualquer escala, como um sistema 5 estrelas ou 10 estrelas, dependendo das necessidades do aplicativo. O intervalo desse valor é de 1 a 25; o valor padrão é 5.

Note

Se o valor for definido como 1, o controle alternará a classificação entre 0 e 1 quando clicado/tocado. Se o valor for definido abaixo do atual Rating, a classificação será ajustada adequadamente.

O exemplo a seguir define a propriedade de classificação máxima:

<toolkit:RatingView
	MaximumRating="7" />

O código C# equivalente é:

RatingView ratingView = new()
{
	MaximumRating = 7,
};

Definir opção de preenchimento

A propriedade FillOption é um(a) enum do tipo RatingViewFillOption para definir como o preenchimento é aplicado quando Rating é definido ou tocado, permitindo uma apresentação visual mais refinada, como preencher apenas o interior das formas ou o item inteiro. As opções disponíveis são:

  • Shape - (padrão) Preencha a forma RatingView.
  • Background - Preencha o plano de fundo atrás da forma

O exemplo a seguir define a propriedade de preenchimento de classificação:

Captura de tela de um exemplo de preenchimento da classificação no RatingView

<toolkit:RatingView
	FillOption="Shape" />
<toolkit:RatingView
	FillOption ="Background" />

O código C# equivalente é:

RatingView shapeFillRatingView = new()
{
	FillOption = RatingViewFillOption.Shape,
};
RatingView itemFillRatingView = new()
{
	FillOption = RatingViewFillOption.Background,
};

Definir classificação

A propriedade Rating é uma double usada para definir o valor atual da classificação, permitindo tanto classificações predefinidas (por exemplo, com base em entrada anterior do usuário ou em dados armazenados) quanto atualizações em tempo de execução, à medida que o usuário interage com o controle.

O exemplo a seguir define a propriedade de classificação:

<toolkit:RatingView
	Rating="3.73" />

O código C# equivalente é:

RatingView ratingView = new()
{
	Rating = 3.73,
};

Tratar evento de alteração de avaliação

O evento RatingChanged tem o tipo de argumento RatingChangedEventArgs. O evento é gerado quando a Rating propriedade é alterada e o elemento IsReadOnly é falso.

A RatingChangedEventArgs expõe uma única propriedade:

  • Rating - O novo valor de classificação.

O exemplo a seguir mostra como anexar o evento:

<toolkit:RatingView
	RatingChanged="RatingView_RatingChanged" />

O código C# equivalente é:

	RatingView ratingView = new();
	ratingView.RatingChanged += RatingView_RatingChanged;

O exemplo a seguir é o código subjacente para tratar o evento:

void RatingView_RatingChanged(object sender, RatingChangedEventArgs e)
{
	double newRating = e.Rating;
	// The developer can then perform further actions (such as save to DB).
}

Definir forma

A propriedade Shape é um(a) enum do tipo RatingViewShape para definir o formato do item de avaliação das avaliações, como estrelas, círculos, curtir, não curtir ou quaisquer outros ícones de avaliação comumente usados. As opções disponíveis são:

  • Star - (padrão)
  • Heart
  • Circle
  • Like
  • Dislike
  • Custom - Exige que CustomShapePath seja definido primeiro; lançará InvalidOperationException se CustomShapePath for null

O exemplo a seguir define a propriedade de preenchimento de classificação:

Captura de tela de um exemplo do formato RatingView

<toolkit:RatingView
	Shape="Star" />
<toolkit:RatingView
	Shape="Heart" />
<toolkit:RatingView
	Shape="Circle" />
<toolkit:RatingView
	Shape="Like" />
<toolkit:RatingView
	Shape="Dislike" />
<toolkit:RatingView
    CustomShapePath="M 12 0C5.388 0 0 5.388 0 12s5.388 12 12 12 12-5.38 12-12c0-6.612-5.38-12-12-12z"
	Shape="Custom" />

O código C# equivalente é:

RatingView starRatingView = new()
{
	Shape = RatingViewShape.Star,
};
RatingView heartRatingView = new()
{
	Shape = RatingViewShape.Heart,
};
RatingView circleRatingView = new()
{
	Shape = RatingViewShape.Circle,
};
RatingView likeRatingView = new()
{
	Shape = RatingViewShape.Like,
};
RatingView dislikeRatingView = new()
{
	Shape = RatingViewShape.Dislike,
};
RatingView customRatingView = new()
{
    CustomShapePath = "M 12 0C5.388 0 0 5.388 0 12s5.388 12 12 12 12-5.38 12-12c0-6.612-5.38-12-12-12z",
	Shape = RatingViewShape.Custom,
};

Definir cor da borda da forma

O ShapeBorderColor é um Color para definir a cor da borda do formato do item de avaliação. Isso fornece flexibilidade adicional para criar formas de classificação visualmente distintas e estilizadas com bordas personalizadas.

O exemplo a seguir define a propriedade de cor da borda da forma:

<toolkit:RatingView
	ShapeBorderColor="Grey" />

O código C# equivalente é:

RatingView ratingView = new()
{
	ShapeBorderColor = Colors.Grey,
};

Definir espessura da borda da forma

O ShapeBorderThickness é um double para definir a espessura da borda da forma. Isso fornece flexibilidade adicional para criar formas de classificação visualmente distintas e estilizadas com bordas personalizadas.

O exemplo a seguir define a propriedade de espessura da borda da forma:

<toolkit:RatingView
	ShapeBorderThickness="3" />

O código C# equivalente é:

RatingView ratingView = new()
{
	ShapeBorderThickness = 3,
};

Exemplos

Você pode encontrar exemplos desse controle em ação no aplicativo de exemplo do Kit de Ferramentas da Comunidade .NET MAUI:

API

O código-fonte do RatingView pode ser encontrado no repositório GitHub do .NET MAUI Community Toolkit.