吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1074|回复: 2
收起左侧

[C&C++ 原创] .Net 8 wpf mvvm 无水印视频下载

[复制链接]
xu低调 发表于 2024-3-2 02:43
本帖最后由 xu低调 于 2024-3-2 02:44 编辑

一直后端开发web api 下午没事写个wpf mvvm 的小玩意
一直没真正用过 主要是练练手devexpress
接口什么的都是网上找的 现在只做了皮皮虾(保存视频总是有片尾)
侵权删
仅限交流学习mvvm模式的开发
下载用的Masuit.Tools  可以支持多线程下载 实际测下来都是小文件 没必要
httprequest用的 restsharp
只是demo 还有很多地方可以完善 留了todo 后面大家感兴趣就尽量完善(多加几个平台) 写上注释
主要用的.net8 +devexpress

image.png

贴一下Model代码
[C#] 纯文本查看 复制代码
 public partial class MainFormViewModel : INotifyPropertyChanged
 {
     public event PropertyChangedEventHandler? PropertyChanged;
     /// <summary>
     /// private 都是当前值
     /// </summary>
     private KeyValuePair<int, string> _selectedPlatformItem;
     private ObservableCollection<string> _listBoxItems;
     private string _validationMessage;
     private string _urlInputData = "https://h5.pipix.com/s/iNwJm6jb/";
     private bool _isBtnDownEnabled = false;

     /// <summary>
     /// public 都是控件的Binding
     /// </summary>
     public string ValidationMessage
     {
         get { return _validationMessage; }
         set
         {
             if (_validationMessage != value)
             {
                 _validationMessage = value;

                 OnPropertyChanged(nameof(ValidationMessage));
             }
         }
     }
     public Dictionary<int, string> PlatformItems { get; set; } = new();
     public KeyValuePair<int, string> SelectedItem
     {
         get => _selectedPlatformItem;
         set
         {
             _selectedPlatformItem = value;
             // 只有当 _selectedPlatformItem 已经被初始化时才调用 OnPropertyChanged
             if (_selectedPlatformItem.Key != 0)
             {
                 OnPropertyChanged(nameof(SelectedItem));
                 // 在用户选择时执行其他逻辑
                 AddListBoxItem(value.Value);
                 //DXMessageBox.Show($"Selected Item: {value.Value}");
                 StrIsUrl();
             }
             else
             {
                 _isBtnDownEnabled = false;
             }
             OnPropertyChanged(nameof(IsBtnDownEnabled));
         }
     }
     public ObservableCollection<string> ListBoxItems
     {
         get => _listBoxItems;
         set
         {
             _listBoxItems = value;
             OnPropertyChanged(nameof(ListBoxItems));
         }
     }
     public string UserInput
     {
         get => _urlInputData;
         set
         {
             _urlInputData= value;
             StrIsUrl();
             OnPropertyChanged(nameof(ValidationMessage));
             OnPropertyChanged(nameof(IsBtnDownEnabled));
             //AddListBoxItem($"URL:{value}    {ValidationMessage}");
         }
     }
     public bool IsBtnDownEnabled
     {
         get => _isBtnDownEnabled;
         set
         {
             if (_isBtnDownEnabled != value)
             {
                 _isBtnDownEnabled = value;
                 OnPropertyChanged(nameof(IsBtnDownEnabled));
             }
         }
     }
     public MainFormViewModel()
     {
         // 初始化数据
         LoadData();

         // 设置默认选中第一个项
         if (PlatformItems.Count > 0)
         {
             SelectedItem = PlatformItems.FirstOrDefault();
         }

     }
     /// <summary>
     /// 构建下拉数据
     /// </summary>
     private void LoadData()
     {
         // 这里模拟加载数据,你需要替换为实际的数据加载逻辑
         PlatformItems = new Dictionary<int, string>
         {
             { 0, "请选择平台" },
             { 1, "皮皮虾" },
         };
         _listBoxItems = new ObservableCollection<string>();
     }
     /// <summary>
     /// 通知更改
     /// </summary>
     /// <param name="propertyName"></param>
     private void OnPropertyChanged(string propertyName)
     {
         PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
     }
     /// <summary>
     /// 下拉数据源
     /// </summary>
     /// <param name="str"></param>
     public void AddListBoxItem(string str)
     {
         // 添加新项到 ListBox
         ListBoxItems.Add($"{DateTime.Now}:  {str}");
     }

     private void StrIsUrl()
     {
         if (Uri.TryCreate(_urlInputData, UriKind.Absolute, out Uri uriResult))
         {
             // 检查协议是否是http或https
             if (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps)
             {
                 _isBtnDownEnabled=true;
                 ValidationMessage = "Valid URL";
             }
             else
             {
                 _isBtnDownEnabled=false;
                 ValidationMessage = "Valid URL";

             }
             ValidationMessage = "Invalid URL";
         }
         else
         {
             _isBtnDownEnabled=false;
             ValidationMessage = "Invalid URL";
         }
     }
 }


源码
No_Mosaic.rar (9.36 KB, 下载次数: 29)

免费评分

参与人数 1吾爱币 +10 热心值 +1 收起 理由
爱飞的猫 + 10 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

yu520 发表于 2024-3-3 10:14
这个可以下载哪些网站的视屏
 楼主| xu低调 发表于 2024-3-3 15:28
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 17:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表