-2

我有两个ListBoxesSourceDestination. 目的地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目的地)

4

3 回答 3

1

要对绑定的数据进行操作,您应该将其转换为您正在使用的数据类型的列表。例如。

private decimal SumDLstBox()
{
    return lstDestination.SelectedItems.Cast<Foo>().Sum(f => f.Cost);
}

Foo您绑定到控件的列表的数据类型在哪里。

于 2013-05-21T20:20:04.070 回答
0

您的.cs-file 将知道该属性lstDestination。您可以使用foreach循环遍历lstDestination. 在同一个循环中,您可以累加成本。

于 2013-05-21T14:18:54.810 回答
0

在我看来,您不是通过 lstDestination.SelectedItems 而是通过 lstDestination.Items 进行迭代

于 2013-05-21T15:15:11.040 回答