2016-01-27 1 views
1

Я довольно новичок в программировании в WPF с помощью xaml и C#, и я искал форум для аналогичной проблемы, но я не смог найти решение для моего проблема.Значение умножения из текстового поля с помощью combobox и отображения в метке в WPF

Я сделал combobox из трех элементов, каждый элемент имеет текстовое содержимое. Когда один из этих элементов выбран, я хочу умножить значение в текстовом поле с номером и отобразить результат в метке. Вот мой код:

public MainWindow() 
    { 
     InitializeComponent(); 
     int a = Int32.Parse(weight.Text); 
     double b; 

     if (this.wcf.SelectedItem==weighing) 
     { 
      b = a * 1.03; 
      wll.Content = b.ToString(); 
     } 
     else if (this.wcf.SelectedItem == uptodate) 
     { 
      b = a * 1.1; 
      wll.Content = b.ToString(); 
     } 
     else if (this.wcf.SelectedItem == lessupdated) 
     { 
      b = a * 1.2; 
      wll.Content = b.ToString(); 
     } 

    } 

«вес» это имя текстового поля, «ФОС» это имя выпадающего списка, «вес», «UpToDate» и «lessupdated» это название пунктов COMBOBOX и «wll» - это имя метки. Они определены в xaml в главном окне.

+2

Не имеет смысла читать что-то в конструкторе (пользователь еще не ввел/не выбрал что-то). Скорее всего, вы захотите использовать какое-либо событие (например, combobox 'SelectionChanged' или' TextChanged') и сделать выше логики (синтаксический анализ, проверка и набор). Или в чем проблема? – Sinatr

ответ

2

Вам понадобится обработчик событий для вашего списка. Что-то вроде:

<Combobox x:Name="wcf" SelectionChanged="cb_SelectionChanged">[...]</Combobox> 

В своем коде позади:

private void cb_SelectionChanged(object sender, RoutedEventArgs e) 
{ 
... 
} 

Метод cb_SelectionChanged будет вызываться каждый раз при нажатии на элемент.

+0

Это сработало, спасибо большое! : D –

+0

Если я хочу использовать переменную b далее в новой инструкции if, после оператора if, который я только что показал, я получаю сообщение об ошибке использования неназначенной локальной переменной. Нужно ли преобразовать переменную b в int и присвоить ее снова? –

+0

Если вы не назначаете какое-либо значение переменной b, вы не можете, например. увеличьте его. При инициализации переменной вы можете присвоить ей значение по умолчанию (например, 'double b = 0') для дальнейшего использования. –

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