我有两个ListBox
es,Source
和Destination
。目标ListBox
已由用户选择Items
。
如何汇总目的地ListBox
中的项目?
目标ListBox
有两种数据类型String
(说明)和decimal
(费用)。
我只想总结成本。这是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>
这是我试图总结费用的代码:
private decimal SumDLstBox()
{
decimal totalCost;
foreach (var i in lstDestination.SelectedItems)
{
totalCost+=i.Cost; //Error is thrown here
}
return totalCost;
}
//Data Source to List Box Source
var items = from r in dc.IResources select r;
lstSource.ItemsSource = items;
用户选择Items
他/她需要的,我的挑战是获取所选项目的总数(已移至ListBox
目的地)
答案 0 :(得分:1)
要对绑定数据进行操作,您应该将其强制转换为您正在使用的数据类型列表。例如。
private decimal SumDLstBox()
{
return lstDestination.SelectedItems.Cast<Foo>().Sum(f => f.Cost);
}
其中Foo
是绑定到控件的List的数据类型。
答案 1 :(得分:0)
您的.cs
- 文件将知道该属性lstDestination
。您可以使用foreach
循环来遍历lstDestination
中的所有元素。在同一个循环中,您可以累计成本核算。
答案 2 :(得分:0)
在我看来,你不要通过lstDestination.SelectedItems迭代,而是通过lstDestination.Items
进行迭代