為livechart的piechart 添加數據綁定 莫忘了


livechart 里面的 所有chart分兩種 一種winform用的 一種wpf用的。

winform用的是把wpf打包做的。

winform也有數據綁定機制,但是功能沒有wpf強

 

 pieChart1.DataBindings.Add(new Binding("Series", datasource, "seriescollection"));

將一個類 datasource 下面的 seriescollection 屬性綁定到 piechart1的 series 屬性上去。

seriescollection就是一個SeriesCollection對象  但這樣明顯無法做到我綁定到一個list表 或則datatable的意願。

所以我把winform 版的piecharts做了個一個繼承 ,因為繼承出來的可以訪問到 里面的核心 WpfBase

 1  public class WinFormPieChartEx1 : LiveCharts.WinForms.PieChart
 2     {
 3         //這個是數據源的包裝類
 4         private datasource _datasource_Container_Object;
 5         public datasource datasource_Container_Object
 6         {
 7             get
 8             {
 9                 if (_datasource_Container_Object == null)
10                     _datasource_Container_Object = new datasource();
11                 return _datasource_Container_Object;
12             }
13             set
14             {
15                 _datasource_Container_Object = value;
16             }
17         }
18 
19         public WinFormPieChartEx1():base()
20         {
21             ///數據源下的sourceList 屬性是保存的數據
22             System.Windows.Data.Binding binding = new System.Windows.Data.Binding("sourceList");
23             //sourceList所在的類
24             binding.Source = datasource_Container_Object;
25             //單向綁定  datasource_Container_Object.sourceList改變 觸發 piechart改變
26             binding.Mode = System.Windows.Data.BindingMode.OneWay;
27             ///轉換器 很重要 實現了 list<double> 到seriesCollection的改變
28             binding.Converter = new DoubleListConvertToSeriesCollection();
29             ///將以上建立的binding關聯到piechart的Seriecs對象
30  WpfBase.SetBinding(LiveCharts.Wpf.PieChart.SeriesProperty, binding);
31         }
32     }
33 
34     //轉換器
35     public class DoubleListConvertToSeriesCollection : System.Windows.Data.IValueConverter
36     {
37         public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
38         {
39             List<double> _value = (List<double>)value;
40             SeriesCollection result = new SeriesCollection();
41             foreach (double n in _value)
42             {
43                 ChartValues<double> chartvalue = new ChartValues<double>();
44                 chartvalue.Add(n);
45                 PieSeries series = new PieSeries();
46                 
47                 series.Values = chartvalue;
48                 result.Add(series);
49             }
50             return result;
51         }
52 
53         public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
54         {
55             return null;
56         }
57     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM