-2

私は 2 つのListBoxesSourceを持っていDestinationます。宛先ListBoxItemsユーザーによって選択されています。

宛先の項目を合計するにはどうすればよいListBoxですか?

Destinationには、(Description) と(Cost)のListBox2 つのデータ タイプがあります。コストだけを合計したい。ここにXAMLコードがありますStringdecimal

<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

lstDestination.SelectedItems ではなく、lstDestination.Items で繰り返すように思えます

于 2013-05-21T15:15:11.040 に答える
0

あなたの.csファイルはプロパティを知っていますlstDestinationforeachループを使用して、内のすべての要素を反復処理できますlstDestination。同じループで、コストを合計できます。

于 2013-05-21T14:18:54.810 に答える