我已经在创建堆叠式柱形图的地方编写了代码。在这里,我计算每个月的值。重复了相同的代码,这很麻烦。我发现这里很难处理我的代码。
int i = 0;
double fstLeaveHrs = 0;
double fstRmngHrs = 0;
double fstPlannedHrs = 0;
double fstAcquisitionHrs = 0;
double sndLeaveHrs = 0;
double sndRmngHrs = 0;
double sndPlannedHrs = 0;
double sndAcquisitionHrs = 0;
double thdLeaveHrs = 0;
double thdRmngHrs = 0;
double thdPlannedHrs = 0;
double thdAcquisitionHrs = 0;
double dblLeaveHrs = GrossWorkingHrs - NetWorkingHrs;
double dblRmngHrs = GrossWorkingHrs - PlannedHrsForPeriod - dblLeaveHrs;
if (dblRmngHrs < 0)
dblRmngHrs = 0;
while (i <= MonthRange)
{
if (i == 0)
{
CalculateHrsForSelectedMonth(SelectedMonthFrom);
fstAcquisitionHrs = CalculateAquisitionHrsForSelectedMonth(SelectedMonthFrom);
fstPlannedHrs = PlannedWorkingHrsInMonth;
fstLeaveHrs = GrossWorkingHrsInMonth - NetWorkingHrsInMonth;
fstRmngHrs = GrossWorkingHrsInMonth - fstPlannedHrs - fstLeaveHrs;
if (fstRmngHrs < 0)
fstRmngHrs = 0;
}
else if (i == 1)
{
CalculateHrsForSelectedMonth(SecondMonth);
sndAcquisitionHrs = CalculateAquisitionHrsForSelectedMonth(SecondMonth);
sndPlannedHrs = PlannedWorkingHrsInMonth;
sndLeaveHrs = GrossWorkingHrsInMonth - NetWorkingHrsInMonth;
sndRmngHrs = GrossWorkingHrsInMonth - sndPlannedHrs - sndLeaveHrs;
if (sndRmngHrs < 0)
sndRmngHrs = 0;
}
else if (i == 2)
{
CalculateHrsForSelectedMonth(ThirdMonth);
thdAcquisitionHrs = CalculateAquisitionHrsForSelectedMonth(ThirdMonth);
thdPlannedHrs = PlannedWorkingHrsInMonth;
thdLeaveHrs = GrossWorkingHrsInMonth - NetWorkingHrsInMonth;
thdRmngHrs = GrossWorkingHrsInMonth - thdPlannedHrs - thdLeaveHrs;
if (thdRmngHrs < 0)
thdRmngHrs = 0;
}
i++;
}
SeriesCollection = new SeriesCollection
{
new StackedColumnSeries
{
Values = new ChartValues<double> { PlannedHrsForPeriod, fstPlannedHrs, sndPlannedHrs,thdPlannedHrs},
DataLabels = true
},
new StackedColumnSeries
{
Values = new ChartValues<double> {fstAcquisitionHrs+sndAcquisitionHrs+thdAcquisitionHrs,fstAcquisitionHrs,sndAcquisitionHrs,thdAcquisitionHrs },
DataLabels = true
},
new StackedColumnSeries
{
Values = new ChartValues<double> { dblLeaveHrs,fstLeaveHrs,sndLeaveHrs,thdLeaveHrs },
//StackMode = StackMode.Values
DataLabels = true
},
new StackedColumnSeries
{
Values = new ChartValues<double> { dblRmngHrs, fstRmngHrs,sndRmngHrs,thdRmngHrs },
//StackMode = StackMode.Values,
DataLabels = true
}
};
//adding values also updates and animates
if (MonthRange == 0)
{
SecondMonth = null;
ThirdMonth = null;
}
else if (MonthRange == 1)
{
ThirdMonth = null;
}
Labels = new[] { "Period", SelectedMonthFrom, SecondMonth, ThirdMonth };
Formatter = value => value + " hrs";
GrossWorkingHrsInMonth = NetWorkingHrsInMonth = PlannedWorkingHrsInMonth = 0;
}
实际上,我需要整整一年。这是我的XAML代码
<lvc:CartesianChart Series="{Binding SeriesCollection}" LegendLocation="None">
<lvc:CartesianChart.AxisX>
<lvc:Axis
Labels="{Binding Labels}"
Separator="{x:Static lvc:DefaultAxes.CleanSeparator}" />
</lvc:CartesianChart.AxisX>
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="Usage" LabelFormatter="{Binding Formatter}"></lvc:Axis>
</lvc:CartesianChart.AxisY>
</lvc:CartesianChart>
我正在寻找易于理解和追溯的东西。