csharpc-sharpdotnetxamlavaloniauicross-platformcross-platform-xamlavaloniaguimulti-platformuser-interfacedotnetcore
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.0 KiB
60 lines
2.0 KiB
using System;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Media;
|
|
using Avalonia.Media.Imaging;
|
|
using Avalonia.Platform;
|
|
|
|
namespace ControlCatalog.Pages;
|
|
|
|
public partial class AvaloniaFlixDetailView : UserControl
|
|
{
|
|
static readonly string[] MovieAssets =
|
|
{
|
|
"avares://ControlCatalog/Assets/Movies/trending1.jpg",
|
|
"avares://ControlCatalog/Assets/Movies/trending2.jpg",
|
|
"avares://ControlCatalog/Assets/Movies/toprated1.jpg",
|
|
"avares://ControlCatalog/Assets/Movies/toprated2.jpg",
|
|
"avares://ControlCatalog/Assets/Movies/toprated3.jpg",
|
|
"avares://ControlCatalog/Assets/Movies/toprated4.jpg",
|
|
"avares://ControlCatalog/Assets/Movies/continue1.jpg",
|
|
"avares://ControlCatalog/Assets/Movies/morelike1.jpg",
|
|
"avares://ControlCatalog/Assets/Movies/search1.jpg",
|
|
"avares://ControlCatalog/Assets/Movies/hero.jpg",
|
|
"avares://ControlCatalog/Assets/Movies/cast1.jpg",
|
|
"avares://ControlCatalog/Assets/Movies/cast2.jpg",
|
|
};
|
|
|
|
public AvaloniaFlixDetailView() => InitializeComponent();
|
|
|
|
public AvaloniaFlixDetailView(string movieTitle)
|
|
{
|
|
InitializeComponent();
|
|
|
|
HeroTitleLabel.Text = movieTitle;
|
|
|
|
var rng = new Random(movieTitle.GetHashCode());
|
|
int imgIdx = Math.Abs(movieTitle.GetHashCode()) % MovieAssets.Length;
|
|
|
|
string year = (2020 + rng.Next(6)).ToString();
|
|
string rating = $"{6.5 + rng.NextDouble() * 3.0:F1}/10";
|
|
int mins = 90 + rng.Next(60);
|
|
string duration = $"{mins / 60}h {mins % 60}m";
|
|
|
|
YearLabel.Text = year;
|
|
RatingLabel.Text = rating;
|
|
DurationLabel.Text = duration;
|
|
|
|
try
|
|
{
|
|
var uri = new Uri(MovieAssets[imgIdx]);
|
|
HeroBg.Background = new ImageBrush(new Bitmap(AssetLoader.Open(uri)))
|
|
{
|
|
Stretch = Stretch.UniformToFill,
|
|
};
|
|
}
|
|
catch
|
|
{
|
|
HeroBg.Background = new SolidColorBrush(Color.Parse("#111111"));
|
|
}
|
|
}
|
|
}
|
|
|