原柱形圖變更為根據數值調整顏色:
xaml前臺代碼:
<lvc:CartesianChart Grid.Row="1" Name="YK_Series" Series="{Binding SeriesCollection}" >
<lvc:CartesianChart.AxisX>
<lvc:Axis LabelsRotation="-40" Labels="{Binding Labels}" DisableAnimations="True" FontSize="15" Name="lbb">
<lvc:Axis.Separator>
<lvc:Separator Step="1"></lvc:Separator>
</lvc:Axis.Separator>
</lvc:Axis>
</lvc:CartesianChart.AxisX>
<lvc:CartesianChart.AxisY>
<lvc:Axis LabelFormatter="{Binding MillionFormatter}"></lvc:Axis>
</lvc:CartesianChart.AxisY>
</lvc:CartesianChart>
后臺原代碼:
//圖表資料集
public class CustomerVm
{
public string Title { get; set; }
public double Value { get; set; }
public string ValueStr { get; set; }
}
List<SharesDataInfo> dayInfo = new List<SharesDataInfo>();
dayInfo = SharesDataInfoList_YK; //SharesDataInfoList_YK 為已查詢到的15條資料,后續就用這個賦值
List<CustomerVm> dayList = new List<CustomerVm>();
string[] XLabels = new string[dayInfo.Count];
for (int i = 0; i < dayInfo.Count; i++)
{
XLabels[i] = dayInfo[i].證券名稱;
dayList.Add(new CustomerVm() { Title = dayInfo[i].證券名稱, Value = double.Parse(dayInfo[i].盈虧金額.ToString()) });
}
//新圖表代碼
SeriesCollection seriesCollection = new SeriesCollection();
Labels = new ObservableCollection<string>(XLabels);
SeriesCollection seriesCollection = new SeriesCollection();
ColumnSeries dayColunmSeries = new ColumnSeries
{
Title = "盈虧 ",
Values = new ChartValues<CustomerVm>(dayList), //dayList 變數為查詢出的15條資料同SharesDataInfoList_YK
};
seriesCollection.Add(dayColunmSeries);
YK_Series.Series = seriesCollection;
lbb.Labels = Labels; // Labels部分代碼省略,提取15個備注沒問題
MillionFormatter = value => (value / 10000).ToString("#.00") + "萬元";
DataContext = this;
以上代碼顯示正常,為靜態標注15個柱形圖,含滑鼠顯示備注
根據數值變更顏色調整代碼后 Series 變更部分:
for (int i = 0; i < SharesDataInfoList_YK.Count; i++)
{
ColumnSeries dayColunmSeries = new ColumnSeries();
dayColunmSeries.Title = "盈虧: ";
dayColunmSeries.Values = new ChartValues<ObservableValue> { new ObservableValue(Convert.ToDouble(SharesDataInfoList_YK[i].盈虧金額)) };
dayColunmSeries.Fill = SharesDataInfoList_YK[i].盈虧金額 > 0 ? new SolidColorBrush(Color.FromRgb(255, 0, 0)) : new SolidColorBrush(Color.FromRgb(0, 255, 0));
seriesCollection.Add(dayColunmSeries);
}
YK_Series.Series = seriesCollection;
lbb.Labels = Labels; // Labels部分代碼省略,提取15個備注沒問題
MillionFormatter = value => (value / 10000).ToString("#.00") + "萬元";
DataContext = this;
其他部分均未改變,修改后柱形圖顏色雖然按邏輯變更了,但底部15個標簽變成了只剩第1條顯示,而且滑鼠選擇柱形圖現實出來的說明也變成了現實全部15條的備注說明。
這個圖形控制元件不太熟悉請教下代碼哪里出了問題?
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/266147.html
標籤:C#
