合并控件
This commit is contained in:
1 parent
233ec5d58d
commit
b842292817
11 files changed
+1400
-463
No files matched your search
@@ -1,38 +1,64 @@
|
||||
using Bogus;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Collections.Specialized;
|
||||
using System.Windows;
|
||||
using MAX.Core.Logger;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Prism.Commands;
|
||||
using Prism.Mvvm;
|
||||
using Trade.Framework.Services;
|
||||
|
||||
namespace Main.Test.ViewModels;
|
||||
|
||||
internal class MainViewModel
|
||||
internal class MainViewModel : BindableBase
|
||||
{
|
||||
private readonly ILoggerFacade _logger;
|
||||
public List<ItemInfo> Data { get; set; }
|
||||
private List<ItemInfo> data = DemoData.Create(10000);
|
||||
public List<ItemInfo> Data { get => data; private set => SetProperty(ref data, value); }
|
||||
private string actionMessage = "可右键查看详情、复制编码或切换状态;默认加载 10,000 行。";
|
||||
public string ActionMessage { get => actionMessage; private set => SetProperty(ref actionMessage, value); }
|
||||
private ObservableCollection<ItemInfo> selectedItems = new();
|
||||
public ObservableCollection<ItemInfo> SelectedItems
|
||||
{
|
||||
get => selectedItems;
|
||||
set
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(value);
|
||||
if (ReferenceEquals(selectedItems, value)) return;
|
||||
selectedItems.CollectionChanged -= SelectionChanged;
|
||||
SetProperty(ref selectedItems, value);
|
||||
selectedItems.CollectionChanged += SelectionChanged;
|
||||
RaisePropertyChanged(nameof(SelectedCount));
|
||||
}
|
||||
}
|
||||
public int SelectedCount => SelectedItems.Count;
|
||||
public int NetworkImageSize { get; set; }
|
||||
public DelegateCommand<ItemInfo> DetailCommand { get; }
|
||||
public DelegateCommand<ItemInfo> ConfirmCommand { get; }
|
||||
public DelegateCommand<ItemInfo> CopyCodeCommand { get; }
|
||||
|
||||
public MainViewModel(ILoggerFacade logger, UserManager userManager)
|
||||
{
|
||||
_logger = logger;
|
||||
_logger.Info("123123");
|
||||
public MainViewModel(ILoggerFacade logger, UserManager userManager)
|
||||
{
|
||||
selectedItems.CollectionChanged += SelectionChanged;
|
||||
DetailCommand = new(item => { if (item != null) ActionMessage = $"详情:{item.Code} · {item.Name} · ¥{item.Value} · {item.Buyer} · {item.Status}"; });
|
||||
ConfirmCommand = new(item =>
|
||||
{
|
||||
if (item == null) return;
|
||||
item.Status = item.Status == "已确认" ? "待处理" : "已确认";
|
||||
ActionMessage = $"已更新 {item.Code}:{item.Status}";
|
||||
});
|
||||
CopyCodeCommand = new(item =>
|
||||
{
|
||||
if (item == null) return;
|
||||
try { Clipboard.SetText(item.Code.ToString()); ActionMessage = $"已复制编码 {item.Code}"; }
|
||||
catch (System.Runtime.InteropServices.ExternalException) { ActionMessage = "剪贴板正忙,请重试。"; }
|
||||
});
|
||||
}
|
||||
private void SelectionChanged(object? sender, NotifyCollectionChangedEventArgs e) => RaisePropertyChanged(nameof(SelectedCount));
|
||||
|
||||
|
||||
|
||||
// 创建 Faker 并配置规则
|
||||
var itemFaker = new Faker<ItemInfo>()
|
||||
.RuleFor(x => x.Code, f => f.Random.Int(1000, 9999)) // 4位随机编码
|
||||
.RuleFor(x => x.Name, f => f.Commerce.ProductName()) // 商品名称
|
||||
.RuleFor(x => x.Value, f => f.Commerce.Price().ToString()) // 商品价格
|
||||
.RuleFor(x => x.Qty, f => f.Random.Int(1, 100)); // 1-100的随机数量
|
||||
|
||||
// 生成单个对象
|
||||
var singleItem = itemFaker.Generate();
|
||||
|
||||
// 生成100个对象
|
||||
Data = itemFaker.Generate(1000);
|
||||
//Data.Clear();
|
||||
}
|
||||
public async Task LoadAsync(int count)
|
||||
{
|
||||
if (count is < 1 or > 50000) throw new ArgumentOutOfRangeException(nameof(count));
|
||||
var imageSize = NetworkImageSize;
|
||||
var rows = await Task.Run(() => DemoData.Create(count, imageSize));
|
||||
SelectedItems.Clear(); Data = rows;
|
||||
ActionMessage = $"已加载 {count:N0} 行;" + (imageSize == 0 ? "本地缩略图。" : $"Picsum {imageSize}×{imageSize} 网络随机图,可见时加载。每次重新加载使用新种子。冷 / 热测试以当前页面已加载状态为准。");
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user