2016-08-23 3 views
-1

У меня есть 5 текстовых полей для номера. и я хочу показать числа чисел из текстовых полей после записи. в настоящее время отображаются номера из текстового поля, а не суммы. Это мой код:Значения суммы WPF из текстового поля

<StackPanel Orientation="Vertical" Margin="0 10 24 0" DockPanel.Dock="Right" HorizontalAlignment="Right"> 
     <TextBlock Text="Hc" HorizontalAlignment="Center"></TextBlock> 
     <ItemsControl ItemsSource="{Binding Path=List}"> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <TextBox Text="{Binding Path=Value, Mode=TwoWay}" PreviewTextInput="NumberValidationTextBox" Width="50"/> 
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl> 
     <Button Command="{Binding SaveCommand}" Style="{StaticResource SmallSuccessButton}" Margin="0 10 0 0" Content="Save"></Button> 
    </StackPanel> 

    <StackPanel Orientation="Vertical" Margin="0 10 5 0" DockPanel.Dock="Right" HorizontalAlignment="Right"> 
     <TextBlock Text="Sum" HorizontalAlignment="Center"></TextBlock> 
     <ItemsControl ItemsSource="{Binding Path=List}" HorizontalContentAlignment="Center"> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal" Background="red"> 
         <TextBlock Text="{Binding Path=Value, Mode=OneWay}" Height="26" PreviewTextInput="NumberValidationTextBox" 
            Width="60" 
            HorizontalAlignment="Center" /> 
        </StackPanel> 
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl> 
    </StackPanel> 

В ViewModel: частный ObservableCollection _list;

public ObservableCollection<Data> List 
    { 
     get { return _list;} 
     set { _list = value; OnPropertyChanged(nameof(List)); } 
    } 



    public class MeasureInput 
    { 
     public float Value { get; set; } 

     public MeasureInput(float f) 
     { 

     } 
    } 

Результат должен быть:

SUM Textboxes 10 я пишу 10 и сумма набор 10 15 я пишу 5 и сумма набор 15

Благодарности

+0

Я не вижу какой-либо код, который выполняет сумму, или значение для его хранения , Каков твой вопрос? – Joe

+0

Этот код прост: List.Sum(), но я не знаю, где его написать. – bluray

ответ

1

Добавить этот код в ваш ViewModel :

public double Sum 
{ 
    get { return List.Sum();} 
} 

И в вашем XAML свяжите просуммировать вместо списка:

<TextBlock Text="{Binding Sum}" /> 
+1

Возможно также стоит отметить, что вам может потребоваться добавить PropertyChangeListeners в Data и повысить значение NotifyPropertyChanged for Sum - в противном случае он не будет обновляться при изменении текстовых полей. – Joe

1

добавить в StackPanel

<StackPanel TextBox.TextChanged="OnTextChanged"> 
.... 


</StackPanel> 

затем в код

public void OnTextChanged(routedEvent e,sender variable) 
{ 
int Sum = 0; 
    if(e.source is TextBox) 
    { 
     forearch(Child child in stackpanel.Children) 
     { 
       if(child is TextBox) 
       { 
        TextBox txt = child as TextBox; 
        if(txt.Text != "") //validation empty textbox 
        Sum+= int.Parse(txt.Text); 
       } 
     } 
    } 

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