# WPFDevelopers.Minimal **Repository Path**: kevinnet/WPFDevelopers.Minimal ## Basic Information - **Project Name**: WPFDevelopers.Minimal - **Description**: 这是一款WPF客户端基础控件,欢迎使用 - **Primary Language**: C# - **License**: MIT - **Default Branch**: main - **Homepage**: https://gitee.com/WPFDevelopersOrg - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 27 - **Created**: 2022-08-09 - **Last Updated**: 2023-05-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
[English](https://github.com/WPFDevelopersOrg/WPFDevelopers.Minimal/blob/master/README.md) ## Welcome to WPFDevelopers.Minimal ![.net >= 4.0](https://img.shields.io/badge/.net-%3E%3D4.0-blue) ![Visual Studio 2019](https://img.shields.io/badge/Visual%20Studio%20-2019-blueviolet) nuget-version WPFDevelopers.Minimal ![Downloads](https://img.shields.io/nuget/dt/WPFDevelopers.Minimal?color=%23409EF) ### [自定义高级控件](https://github.com/WPFDevelopersOrg/WPFDevelopers) https://github.com/WPFDevelopersOrg/WPFDevelopers ### [码云](https://gitee.com/WPFDevelopersOrg) https://gitee.com/WPFDevelopersOrg ### 加入QQ群:458041663 ### 欢迎关注微信公众号 ### 捐助 如果您觉得我们的开源软件对你有所帮助,请扫下方二维码打赏我们一杯咖啡。 | 支付宝 | 微信 | |----|-----| | | | ### 贡献者 ChisterWu ChisterWu ### .Net Version | .Net Version | Status | | ---- | ---- | | Net40 | ✅ | | net45 | ✅ | | net46 | ✅ | | net47 | ✅ | | net48 | ✅ | | netcoreapp3.0 | ✅ | | net5.0-windows | ✅ | | net6.0-windows | ✅ | ### 效果展示 ![light](https://gitee.com/WPFDevelopersOrg/ResourcesCache/raw/main/resources/WPFDevelopers.Minimal/0.png) ![dark](https://gitee.com/WPFDevelopersOrg/ResourcesCache/raw/main/resources/WPFDevelopers.Minimal/dark.png) ### Nuget 版本大于等于 3.2.3 效果展示 [Blue](#Blue) [Green](#Green) [Red](#Red) [Orange](#Orange) [Purple](#Purple) ### 第一步: 添加 nuget; ``` Install-Package WPFDevelopers.Minimal ``` ### 第二步: App.xaml中增加节点: ### 2022/08/28 更新程序 Nuget 版本 3.2.7-预览 1)增加是否打开水印; 2)datagrid和listview列标题居中; 3)增加了 VirtualizingWrapPanel 控件; 4)添加nuget包WPFDevelopers.Minimal.3.2.7-preview; 欢迎下载体验 ### 2022/08/06 更新 Nuget 版本 3.2.6-preview 1)增加了对在ContentControl中添加Loading的支持; 2)修复问题; 3)添加nuget包WPFDevelopers.Minimal.3.2.6-preview; 欢迎下载体验 ### 2022/08/01 更新 Nuget 版本 3.2.5-preview 添加了以下内容: 1) Loading 关闭后,发送事件通知,停止任务; 2)修复问题; 3)添加nuget包WPFDevelopers.Minimal.3.2.5-preview; 欢迎下载体验 ### 2022/06/20 更新 Nuget 版本 3.2.4 ### App.xaml 添加命名空间 ` xmlns:ws="https://github.com/WPFDevelopersOrg.WPFDevelopers.Minimal" ` ``` XAML ``` ### Nuget 版本等于 3.2.3 ``` XAML ``` ### Nuget 版本小于 3.2.3 ``` XAML ``` ### 第三步:添加命名空间: Nuget 包版本 >= 3.2.7-preview `xmlns:ws="https://github.com/WPFDevelopersOrg/WPFDevelopers.Minimal"` Nuget 包版本 < 3.2.7-preview `xmlns:ws="https://github.com/WPFDevelopersOrg.WPFDevelopers.Minimal"` `xmlns:ws="https://github.com/WPFDevelopersOrg.WPFDevelopers.Minimal"` ### 使用方法 [数据源](#数据源) [Window](#Window) [Loading](#Loading) [MessageBox](#MessageBox) [Menu|ContextMenu](#Menu|ContextMenu) [Button](#Button) [RadioButton](#RadioButton) [Checkbox](#Checkbox) [TextBox](#TextBox) [PasswordBox](#PasswordBox) [ComboBox](#ComboBox) [ToggleButton](#ToggleButton) [DatePicker](#DatePicker) [Slider](#Slider) [ProgressBar](#ProgressBar) [DataGrid](#DataGrid) [ListBox](#ListBox) [ListView](#ListView) [TreeView](#TreeView) [Expander](#Expander) [GroupBox](#GroupBox) [TabControl](#TabControl) ### 数据源 1)数据源 ``` C# using System; using System.Collections.ObjectModel; using System.Linq; using System.Windows; using WPFDevelopers.Minimal.Sample.Models; namespace WPFDevelopers.Minimal.Sample.ExampleViews { public partial class MainView : WPFDevelopers.Minimal.Net40.Window { #region DataSource public ObservableCollection UserCollection { get { return (ObservableCollection)GetValue(UserCollectionProperty); } set { SetValue(UserCollectionProperty, value); } } public static readonly DependencyProperty UserCollectionProperty = DependencyProperty.Register("UserCollection", typeof(ObservableCollection), typeof(MainView), new PropertyMetadata(null)); public bool AllSelected { get { return (bool)GetValue(AllSelectedProperty); } set { SetValue(AllSelectedProperty, value); } } public static readonly DependencyProperty AllSelectedProperty = DependencyProperty.Register("AllSelected", typeof(bool), typeof(MainView), new PropertyMetadata(AllSelectedChangedCallback)); private static void AllSelectedChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e) { var view = d as MainView; var isChecked = (bool)e.NewValue; if ((bool)e.NewValue) view.UserCollection.ToList().ForEach(y => y.IsChecked = isChecked); else view.UserCollection.ToList().ForEach(y => y.IsChecked = isChecked); } #endregion public MainView() { InitializeComponent(); this.Loaded += MainView_Loaded; } private void MainView_Loaded(object sender, RoutedEventArgs e) { var time = DateTime.Now; UserCollection = new ObservableCollection(); for (int i = 0; i < 4; i++) { UserCollection.Add(new UserModel { Date = time, Name = "WPFDevelopers", Address = "No. 189, Grove St, Los Angeles", Children = new System.Collections.Generic.List() { new UserModel { Name= "WPFDevelopers.Minimal1.1" }, new UserModel { Name = "WPFDevelopers.Minimal1.2" }, new UserModel { Name = "WPFDevelopers.Minimal1.3" }, new UserModel { Name= "WPFDevelopers.Minimal1.4" }, new UserModel { Name = "WPFDevelopers.Minimal1.5" }, new UserModel { Name = "WPFDevelopers.Minimal1.6" }, } }); time = time.AddDays(2); } } } } ``` ### Window 1)XAML ``` XML ws:Window x:Class="WpfApp.MainWindow" ``` 2)去除.cs文件中的继承 ``` C# public partial class MainWindow ``` ![Window](https://gitee.com/WPFDevelopersOrg/ResourcesCache/raw/main/resources/WPFDevelopers.Minimal/Window.png) ### Loading 1).cs ``` C# var task = new Task(() => { //Things to wait for Thread.Sleep(5000); }); task.ContinueWith((previousTask) => { WPFDevelopers.Minimal.Controls.Loading.Close(); },TaskScheduler.FromCurrentSynchronizationContext()); WPFDevelopers.Minimal.Controls.Loading.Show(); task.Start(); ``` 2)Exit Task ``` C# var tokenSource = new CancellationTokenSource(); var cancellationToken = tokenSource.Token; var task = new Task(() => { for (int i = 0; i < 5; i++) { //这里做自己的事情 if (tokenSource.IsCancellationRequested)return; Thread.Sleep(1000); } }, cancellationToken); task.ContinueWith(previousTask => { if (tokenSource.IsCancellationRequested)return; Loading.Close(); }, TaskScheduler.FromCurrentSynchronizationContext()); Loading.Show(true); Loading.LoadingQuitEvent += delegate { tokenSource.Cancel(); }; task.Start(); ``` ![Loading](https://gitee.com/WPFDevelopersOrg/ResourcesCache/raw/main/resources/WPFDevelopers.Minimal/loading.gif) ### MessageBox 1).cs 使用如下 ``` C# WPFDevelopers.Minimal.Controls.MessageBox.Show("文件删除成功。", "消息",MessageBoxButton.OK,MessageBoxImage.Information); WPFDevelopers.Minimal.Controls.MessageBox.Show("当前文件不存在!", "警告", MessageBoxImage.Warning); WPFDevelopers.Minimal.Controls.MessageBox.Show("当前文件不存在。", "错误", MessageBoxImage.Error); WPFDevelopers.Minimal.Controls.MessageBox.Show("当前文件不存在,是否继续?", "询问", MessageBoxButton.OKCancel, MessageBoxImage.Question); ``` ![MessageBox](https://gitee.com/WPFDevelopersOrg/ResourcesCache/raw/main/resources/WPFDevelopers.Minimal/MessageBox.gif) ### Menu|ContextMenu 1)XAML ``` XML ``` ![Menu](https://gitee.com/WPFDevelopersOrg/ResourcesCache/raw/main/resources/WPFDevelopers.Minimal/Menu.gif) ### Button 1)XAML ``` XML