WPF有很多开源免费的UI库,本文主要介绍常见的MahApps、HandyControl两个UI库;在开发过程中经常会涉及到图表的开发,本文主要介绍LiveCharts开源图表库。
第三方UI库的使用一般都是三步:
xmlns:xxxx="xxxxxxx"
MahApps.Metro官方网站
MahApps.Metro
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
该UI库不仅扩展了很多扩展控件,还对原生的控件进行了美化。看一个简单案例
因为涉及到了窗体,所以在后台类中需要继承MetroWindow
使用方法类似,Nuget安装HandyControl
App.xaml中引入
HandyOrg中文官方文档
官方网站上详细介绍了各控件的使用方法和控件的展示效果,并且网站是中文的十分友好,详细使用说明直接查看官网即可。
Nuget包安装LiveCharts.Wpf
引入命名空间xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
ModelView
public class MainViewModel
{public ChartValues Values { get; set; }public ChartValues Values2 { get; set; }public ObservableCollection xLabels { get; set; }public MainViewModel(){Values = new ChartValues();Values2 = new ChartValues();xLabels = new ObservableCollection();Random random = new Random();Task.Factory.StartNew(async () =>{while (true){await Task.Delay(1000);Values.Add(random.Next(10, 80));Values2.Add(random.Next(10,90));xLabels.Add(DateTime.Now.ToString("mm:ss"));if (Values.Count > 50){Values.RemoveAt(0);Values2.RemoveAt(0);xLabels.RemoveAt(0);}}});}
}
更多使用方法见官方网站
LiveCharts满足基本的需求,但是如果数据量较大的话,性能会大打折扣,如果追求性能可以使用下ScottPlot
开源库,但是该库某些功能没有实现。如果对性能有较高的要求,也可以使用LightningChart.NET
,不过这是收费的组件库。