由于專案中經常用到Series Chart,而目前市面又實在找不到既支持MVVM,又輕量級的開源Chart控制元件,于是干脆就花了兩周時間隨手寫了一個,昨天感徑訓比較滿意,就發布到了Github上:https://github.com/zenjia/MvvmChart
特色:
- 支持MVVM設計模式: 這也是其最大的特色,用戶可以自定義SeriesDataTemplate,并支持SeriesDataTemplateSelector(具體資訊見Github專案簡介),事實上,當初開發這套控制元件的初衷就是因為找不到開源的支持MVVM的WPF Chart控制元件;
- 功能豐富:支持多種常用的Line Series(包括Polyline,StepLine,Spline)和Area Series(包括PolylineArea,StepLineArea,SplineArea),支持顯示Item Point,坐標軸支持多重放置模式,支持GridLine,CrossHairs等;
- 高度可定制:Series和Item Point的自定義都可以通過簡單的Binding或修改Style來完成,坐標軸的Label文本支持ValueConverter,tick支持用戶顯示指定的資料,
- 高度可擴展:主要的Series類都繼承自基類PathSeries,用戶可以通過實作IGeometryBuilder并將其傳遞給PathSeries的GeometryBuilder屬性來創建自己的Series,理論上,用戶可以自定義自己想要的任何型別,只要它可以通過Path來繪制,因此這種模式具有高度的可擴展性;
- 輕量級:代碼簡潔,全部代碼不到5k行,功能專注于常用的Cartesian 2D Series Chart,不包含餅狀圖、柱狀圖等可以簡單通過ItemsControl來繪制的Chart
截圖:
Line Series,無Item Point:(從上自下依次為PolylineSeries、StepLineSeries、SplineSeries)

Line Series,帶Item Point:

Area Series,不帶Item Point:

Area Series,帶Item Point:

使用方法:
首先定義資料點:
public class SomePoint { public double t { get; } public double Y { get; } } public class DemoDataViewModel { public List<List<SomePoint>> ItemsSourceList { get; } }
然后創建DataTemplate:
<DataTemplate x:Key="SeriesTemplate1"> <mvvmCharting:PolyLineSeries IndependentValueProperty="t" DependentValueProperty="Y" Stroke="Red" StrokeThickness="1.5" ItemsSource="{Binding}"> </mvvmCharting:PolyLineSeries> </DataTemplate>
最后,創建一個SeriesChart,并參考上面的DateTemplate:
<mvvmCharting:SeriesChart Background="Bisque" SeriesDataTemplate="{StaticResource SeriesTemplate1}" SeriesItemsSource="{Binding ItemsSourceList, Source={StaticResource GlobalDemoDataViewModel}}"> <mvvmCharting:SeriesChart.XAxis> <axis:XAxis /> </mvvmCharting:SeriesChart.XAxis> <mvvmCharting:SeriesChart.YAxis> <axis:YAxis /> </mvvmCharting:SeriesChart.YAxis> </mvvmCharting:SeriesChart>
(更多使用Sample見專案里的Demo工程)
(對UWP的支持將很快加入)
(歡迎批評指正,歡迎提交bug)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/238645.html
標籤:.NET技术
