2013-05-21 2 views
-2

У меня есть два 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 s/ему нужно, моя задача состоит в том, чтобы получить общее количество (которые были перемещены в пункт назначения ListBox)

+0

Где находится 'ItemsSource'? разместите соответствующий код. –

ответ

1

Для работы на ваших связанных данных, вы должны бросить его в список с типом данных вы работаете с , Напр.

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

Где Foo является тип данных из списка вы связаны с контролем.

+0

Спасибо @Shawn Я скорректировал код до return lstDestination.Items – love

0

Ваш .cs -файл будет знать об этом объекте lstDestination. Вы можете использовать цикл foreach для повторения всех элементов в lstDestination. В этом же цикле вы можете добавить стоимость.

+0

@love Ну, попробуйте что-нибудь, проверьте его, и если вы не понимаете, почему это не работает, найдите сообщение об ошибке на SO, чтобы узнать, спросил ли кто-нибудь об этом раньше. Если эти ответы вам не помогут, отправьте вопрос с кодом, сообщением об ошибке и тем, что вы попробовали. Так работает этот сайт. Мы не создаем приложения для вас. Куда вы попадаете в стену? Что вы не понимаете? Вы действительно должны быть более ясными, потому что я не могу догадаться, что вы не понимаете ... – Joetjah

+0

@JoeJah Я понимаю, что я отредактировал вопрос с кодом, который я пробовал. – love

+0

Ну, ошибка, которую выбрал «объект», не содержит определения для «Стоимость» и никакого метода расширения «Стоимость», принимающего первый аргумент типа «объект» » – love

0

Кажется мне, что вы не итерацию по lstDestination.SelectedItems а по lstDestination.Items

Смежные вопросы