序言
要想实现复用性高的按钮,就必须新建自定义控件。
WPF仿网易云音乐系列
https://www.cnblogs.com/xytx/p/9257862.html
https://www.bilibili.com/video/av75126785/
WPF 装饰器(Adorner)
https://blog.csdn.net/qq_43024228/article/details/110454081
https://github.com/944095635/DMSkin-CloudMusic
WPF控件库(MaterialDesign集成)
WPF定时刷新UI界面
using NHibernate.Criterion; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Data; using System.Linq; using System.Text; using System.Threading; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using Visifire.Charts; namespace SunCreate.CombatPlatform.Client { public partial class MainPage : UserControl { private System.Timers.Timer timerNotice = null; public MainPage() { InitializeComponent(); } private void MainPage_Loaded(object sender, RoutedEventArgs e) { #region 通知公告 if (timerNotice == null) { BindNotice(); timerNotice = new System.Timers.Timer(); timerNotice.Elapsed += new System.Timers.ElapsedEventHandler((o, eea) => { BindNotice(); }); timerNotice.Interval = 60 * 1000; timerNotice.Start(); } #endregion } private void MainPage_SizeChanged(object sender, SizeChangedEventArgs e) { } #region 绑定通知公告 private void BindNotice() { System.Threading.Tasks.Task.Factory.StartNew(() => { try { int total = 0; TES_NOTICE info = new TES_NOTICE(); IList<TES_NOTICE> list = new List<TES_NOTICE>(); list = HI.Get<INoticeService>().GetListPage(null, DateTime.MinValue, DateTime.MinValue, 1, 50, ref total); Dispatcher.Invoke(new Action(() => { noticeListView.ItemsSource = list; })); } catch { } }); } #endregion } }
开源项目
资料
https://www.cnblogs.com/tsliwei/category/844319.html
如果是项目上使用,推荐其他开比较成熟的源wpf控件,如:
https://github.com/HandyOrg/HandyControl
https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit