【发布时间】:2021-05-15 20:10:27
【问题描述】:
我正在尝试在 WPF DataGrid 中制作一个 7 天滚动平均体重计算器。所以基本上你一周的体重总和除以 7 = 你 7 天的平均体重。因此,用户将他们的权重放在名为gridListValues 的ObservableCollectionsList 中,然后将其添加到DataGrid 中。 7 天后,他们在 DataGrid 的另一列中获得 7 天的平均重量。
问题是,当我在 DataGrid 中输入了七次权重时,我得到了以下结果:
((6 * weight) / 7)。但实际结果应该是((7 * weight) / 7)。我认为这是因为我在实例化对象并将其添加到列表的同时调用了进行计算的方法?不太确定我应该如何解决这个问题。代码如下:
private void AddWeightToGridButton_Click(object sender, RoutedEventArgs e)
{
WeightGridValues averageWeight = new WeightGridValues();
if (gridListValues.Count <= 5)
gridListValues.Add(new WeightGridValues { Weight = AddWeightToGrid.Text, Date = Convert.ToString(AddDateToGrid) });
else if (gridListValues.Count >= 6)
{
gridListValues.Add(new WeightGridValues { Weight = AddWeightToGrid.Text, Date = Convert.ToString(AddDateToGrid), SevenDayWeightAverage = SevenDayAverageCalc(averageWeight) });
}
}
private string SevenDayAverageCalc(WeightGridValues averageWeight)
{
decimal sevenDayCalc = 0;
for (int i = 0; i < gridListValues.Count; i++)
{
sevenDayCalc += Convert.ToDecimal(gridListValues[i].Weight);
Convert.ToDecimal(gridListValues[i].SevenDayWeightAverage);
}
sevenDayCalc = sevenDayCalc / 7;
return averageWeight.SevenDayWeightAverage = Convert.ToString(sevenDayCalc);
}
public class WeightGridValues
{
public string Weight { get; set; }
public string Date { get; set; }
public string SevenDayWeightAverage { get; set; }
}
XAML:
<DataGrid x:Name="WeightDataGrid" Margin="440,194,10,10" AutoGenerateColumns="False" Grid.RowSpan="2" Grid.ColumnSpan="2">
<DataGrid.Columns>
<DataGridTextColumn IsReadOnly="False" Header=" Date " Binding="{Binding Date, Mode=OneWay}" Width="100"/>
<DataGridTextColumn Header=" Weight " Binding="{Binding Weight}" Width="80"/>
<DataGridTextColumn Header=" 7-Day average " Binding="{Binding SevenDayWeightAverage}" Width="*"/>
</DataGrid.Columns>
</DataGrid>
【问题讨论】: