58 lines
2.1 KiB
C#
58 lines
2.1 KiB
C#
using Gallery.Illust;
|
|
using Xamarin.Forms;
|
|
|
|
namespace Gallery.UI
|
|
{
|
|
public class CardView : ContentView
|
|
{
|
|
public static readonly BindableProperty CornerRadiusProperty = BindableProperty.Create(
|
|
nameof(CornerRadius), typeof(float), typeof(CardView));
|
|
public static readonly BindableProperty ShadowColorProperty = BindableProperty.Create(
|
|
nameof(ShadowColor), typeof(Color), typeof(CardView));
|
|
public static readonly BindableProperty ShadowRadiusProperty = BindableProperty.Create(
|
|
nameof(ShadowRadius), typeof(float), typeof(CardView), 3f);
|
|
public static readonly BindableProperty ShadowOffsetProperty = BindableProperty.Create(
|
|
nameof(ShadowOffset), typeof(Size), typeof(CardView));
|
|
public static readonly BindableProperty RankProperty = BindableProperty.Create(
|
|
nameof(Rank), typeof(int), typeof(CardView));
|
|
|
|
public float CornerRadius
|
|
{
|
|
get => (float)GetValue(CornerRadiusProperty);
|
|
set => SetValue(CornerRadiusProperty, value);
|
|
}
|
|
public Color ShadowColor
|
|
{
|
|
get => (Color)GetValue(ShadowColorProperty);
|
|
set => SetValue(ShadowColorProperty, value);
|
|
}
|
|
public float ShadowRadius
|
|
{
|
|
get => (float)GetValue(ShadowRadiusProperty);
|
|
set => SetValue(ShadowRadiusProperty, value);
|
|
}
|
|
public Size ShadowOffset
|
|
{
|
|
get => (Size)GetValue(ShadowOffsetProperty);
|
|
set => SetValue(ShadowOffsetProperty, value);
|
|
}
|
|
public int Rank
|
|
{
|
|
get => (int)GetValue(RankProperty);
|
|
set => SetValue(RankProperty, value);
|
|
}
|
|
|
|
protected override SizeRequest OnMeasure(double widthConstraint, double heightConstraint)
|
|
{
|
|
if (BindingContext is IllustItem illust &&
|
|
illust.Width > 0 &&
|
|
illust.ImageHeight.IsAuto)
|
|
{
|
|
illust.ImageHeight = widthConstraint * illust.Height / illust.Width;
|
|
}
|
|
return base.OnMeasure(widthConstraint, heightConstraint);
|
|
}
|
|
}
|
|
}
|
|
|