79 lines
3.8 KiB
C#
79 lines
3.8 KiB
C#
using System.Globalization;
|
|
using System.Windows;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using Prism.Mvvm;
|
|
|
|
namespace Main.Test;
|
|
|
|
public class ItemInfo : BindableBase
|
|
{
|
|
public int Code { get; init; }
|
|
public string Name { get; init; } = "";
|
|
public string Value => Price.ToString("N2", CultureInfo.CurrentCulture);
|
|
public decimal Price { get; init; }
|
|
public int Qty { get; init; }
|
|
public string Sku { get; init; } = "";
|
|
public string Shop { get; init; } = "";
|
|
public string Buyer { get; init; } = "";
|
|
public string Address { get; init; } = "";
|
|
public string Remark { get; init; } = "";
|
|
public DateTime CreatedAt { get; init; }
|
|
public ImageSource Thumbnail { get; init; } = null!;
|
|
public string? ThumbnailUrl { get; init; }
|
|
private string status = "待处理";
|
|
public string Status { get => status; set => SetProperty(ref status, value); }
|
|
}
|
|
|
|
internal static class DemoData
|
|
{
|
|
// 冻结并共享小尺寸位图,滚动不触发网络请求或重复解码。
|
|
private static readonly ImageSource[] Thumbnails = CreateThumbnails();
|
|
|
|
public static List<ItemInfo> Create(int count, int networkImageSize = 0)
|
|
{
|
|
string[] names = ["轻量通勤双肩包", "纯棉宽松短袖", "旅行收纳组合", "便携保温水杯", "无线办公鼠标", "桌面收纳置物盒", "运动休闲鞋", "折叠防晒遮阳伞"];
|
|
string[] shops = ["城市生活旗舰店", "优选数码专营店", "日常好物集合店", "远行户外用品店"];
|
|
var random = new Random(20261022);
|
|
var session = Guid.NewGuid().ToString("N");
|
|
var result = new List<ItemInfo>(count);
|
|
for (var i = 0; i < count; i++)
|
|
result.Add(new ItemInfo
|
|
{
|
|
Code = 100000 + i, Name = names[i % names.Length] + " · 秋季新品 / 品质款",
|
|
Price = random.Next(1900, 69900) / 100m, Qty = random.Next(1, 100),
|
|
Sku = $"SKU-{i:000000} / {(i % 2 == 0 ? "雾蓝" : "米白")} / 标准款",
|
|
Shop = shops[i % shops.Length], Buyer = $"买家{i:00000}",
|
|
Address = $"浙江省杭州市西湖区 文一路 {i % 300 + 1} 号 · 联系尾号 {i % 10000:0000}",
|
|
Remark = i % 3 == 0 ? "请核对规格,周末可收货;外包装请加固。" : "常规发货 / 已核对收货信息",
|
|
CreatedAt = new DateTime(2026, 10, 22, 12, 0, 0).AddMinutes(-i),
|
|
Status = new[] { "待处理", "已确认", "待发货", "已完成" }[i % 4],
|
|
Thumbnail = Thumbnails[i % Thumbnails.Length],
|
|
ThumbnailUrl = networkImageSize == 0 ? null : $"https://picsum.photos/seed/{session}-{i}/{networkImageSize}/{networkImageSize}"
|
|
});
|
|
return result;
|
|
}
|
|
|
|
private static ImageSource[] CreateThumbnails()
|
|
{
|
|
var images = new ImageSource[16];
|
|
for (var i = 0; i < images.Length; i++)
|
|
{
|
|
var visual = new DrawingVisual();
|
|
using (var dc = visual.RenderOpen())
|
|
{
|
|
var color = Color.FromRgb((byte)(55 + i * 11), (byte)(100 + i * 6), (byte)(165 - i * 4));
|
|
dc.DrawRoundedRectangle(new SolidColorBrush(Color.FromRgb(241, 245, 249)), null, new Rect(0, 0, 72, 72), 8, 8);
|
|
var brush = new SolidColorBrush(color);
|
|
var pen = new Pen(brush, 4);
|
|
dc.DrawRoundedRectangle(null, pen, new Rect(25, 12, 22, 24), 10, 10);
|
|
dc.DrawRoundedRectangle(brush, null, new Rect(14, 26, 44, 36), 6, 6);
|
|
dc.DrawLine(new Pen(Brushes.White, 2), new Point(24, 44), new Point(48, 44));
|
|
}
|
|
var bitmap = new RenderTargetBitmap(72, 72, 96, 96, PixelFormats.Pbgra32);
|
|
bitmap.Render(visual); bitmap.Freeze(); images[i] = bitmap;
|
|
}
|
|
return images;
|
|
}
|
|
}
|