2014-09-02 4 views
0

세 개의 값이있는 목록 상자가 있습니다. ListBox의 모든 항목에 대해 FEstado 값을 가져와 합계해야합니다. 그러나이 ListBox에는 항목이 정의되어 있지 않으므로 사용자는 다른 ListBox에서 항목을 선택합니다.목록 상자 항목을 합계하는 방법

내 목록 상자 :

<ListBox Name="List2" HorizontalContentAlignment="Stretch" Grid.ColumnSpan="3" Margin="0,43,-66,0"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Margin="0,0,0,17" Width="432" Height="95" Hold="holdListRmv"> 
       <TextBlock Grid.Column="0" Text="{Binding FNome}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
       <TextBlock Grid.Column="1" Text="{Binding FEstado}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/> 
       <TextBlock Grid.Column="2" Text="{Binding Quantity}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextNormalStyle}"/> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
+0

MVVM을 사용하고 있습니까? 왜 모델보기에서 값을 요약하지 않고 원하는 위치에 바인딩 할 수 있습니까? – Diego

답변

2

당신이 (your previous question 참조) ListBoxItems 속성에 모델 항목을 추가하여 ListBox을 채울 수 있다고 가정하면, 당신은 같은 ListBox.Items 호텔에서 모든 항목을 얻을 수 있습니다. 그리고 FEstado이 숫자 가정, 당신은 같은 것을 할 수 있습니다

var items = List2.Items.Cast<Fields>(); 
var total = items.Sum(o => o.FEstado); 
+0

이 코드는 저에게 효과적입니다. 그리고 다시 당신이 나를 구 했어요. 대단히 고맙습니다. –

1

당신은 이런 일을 할 수 이 시도 :

XAML :

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="0"> 
    <StackPanel> 
     <ListBox Name="List2" HorizontalContentAlignment="Stretch" Grid.ColumnSpan="3" Margin="0,43,-66,0"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Margin="0,0,0,17" Width="432" Height="95" > 
         <TextBlock Grid.Column="0" Text="{Binding FNome}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
         <TextBlock Grid.Column="1" Text="{Binding FEstado}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/> 
         <TextBlock Grid.Column="2" Text="{Binding Quantity}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextNormalStyle}"/> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
     <Button Content="sum" Click="Button_Click_1"></Button> 
    </StackPanel> 
</Grid> 

CS :

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    base.OnNavigatedTo(e); 
    ObservableCollection<DataClass> obj = new ObservableCollection<DataClass>(); 
    obj.Add(new DataClass("AA", "10", "10")); 
    obj.Add(new DataClass("BB", "10", "10")); 
    List2.ItemsSource = obj; 
} 

private void Button_Click_1(object sender, RoutedEventArgs e) 
{ 
    int sum = 0; 
    for (int i = 0; i < List2.Items.Count; i++) 
    { 
     DataClass obj = (DataClass)List2.Items[i]; 
     sum += int.Parse(obj.FEstado.ToString()); 
    } 
    MessageBox.Show(sum.ToString()); 
} 

public class DataClass 
{ 
    public string FNome { get; set; } 
    public string FEstado { get; set; } 
    public string Quantity { get; set; } 
    public DataClass() { } 

    public DataClass(string FNome, string FEstado, string Quantity) 
    { 
     this.FNome = FNome; 
     this.FEstado = FEstado; 
     this.Quantity = Quantity; 
    } 
} 
관련 문제