C# 如何对列表框中的项目求和?
我有两个C# 如何对列表框中的项目求和?,c#,wpf,linq,listbox,C#,Wpf,Linq,Listbox,我有两个ListBoxes、Source和Destination。目标列表框包含用户选择的项目 如何对目标列表框中的项目求和 目标列表框有两种数据类型字符串(说明)和十进制(成本)。 我只想把成本加起来。这是XAML代码 <ListBox Height="237" HorizontalAlignment="Left" Margin="44,191,0,0" Name="lstDestination" VerticalAlignment="Top" Width="264" Grid.Colu
ListBox
es、Source
和Destination
。目标列表框
包含用户选择的项目
如何对目标列表框中的项目求和
目标列表框
有两种数据类型字符串
(说明)和十进制
(成本)。
我只想把成本加起来。这是XAML代码
<ListBox Height="237" HorizontalAlignment="Left" Margin="44,191,0,0" Name="lstDestination" VerticalAlignment="Top" Width="264" Grid.ColumnSpan="2" ItemsSource="{Binding Source={StaticResource myItemList}}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<DockPanel >
<TextBlock FontWeight="Bold" Text="Item:" DockPanel.Dock="Left" Margin="5,0,10,0"/>
<TextBlock Text="{Binding Path=Resource}" Foreground="Green" FontWeight="Bold" />
<TextBlock FontWeight="Bold" Text="Cost:" DockPanel.Dock="Left" Margin="5,0,10,0"/>
<TextBlock Text="{Binding Path=Cost}" FontWeight="Bold" />
</DockPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
用户选择所需的项目,我的挑战是获取所选项目的总数(已移动到列表框目的地)您的.cs
-文件将知道属性lstDestination
。您可以使用foreach
循环来迭代lstDestination
中的所有元素。在同一个循环中,您可以计算成本。在我看来,您不需要按lstDestination.SelectedItems迭代,而是按lstDestination.Items迭代。要对绑定的数据进行操作,您应该将其强制转换到正在使用的数据类型列表中。例如
private decimal SumDLstBox()
{
return lstDestination.SelectedItems.Cast<Foo>().Sum(f => f.Cost);
}
private decimal SumDLstBox()
{
返回lstDestination.SelectedItems.Cast().Sum(f=>f.Cost);
}
其中,Foo
是绑定到控件的列表的数据类型。@好吧,尝试一下,测试一下,如果你不明白为什么它不起作用,请查看上面的错误消息,看看以前是否有人问过。如果这些答案对你没有帮助,就用你的代码、错误信息和你尝试过的东西发布一个问题。这就是这个网站的工作方式。我们不会为您创建应用程序。你在哪里碰壁?你不明白的是什么?你真的必须更清楚,因为我猜不出你不明白什么…@JoeJah我知道我用我尝试过的代码编辑了这个问题。抛出的错误是“'object'不包含'Cost'的定义,没有扩展方法'Cost'接受'object'类型的第一个参数”-1。这会鼓励使用非常糟糕的做法@HighCore:+1-对不起,我不同意。我也喜欢MVVM模式,并且我也通过坚持它来实现一切,但是你不能告诉人们,他们的方法是错误的,因为他们没有使用它。这是一个自由的世界,实现WPF应用程序的方法不止一种。如果他们不想分离UI、逻辑和数据,就让他们来吧。当然你可以给出建议,但仅此而已。ItemsSource
来自哪里?发布相关代码。谢谢@Shawn我更正了代码以返回lstDestination.Items
private decimal SumDLstBox()
{
return lstDestination.SelectedItems.Cast<Foo>().Sum(f => f.Cost);
}