FloydReme
@FloydReme
Пишу музыку и программирую

Как сделать вывод значения в Label, используя WPF?

Я - новичок в C#, да и в программировании в целом(в школе в Паскале программирую, но его не в счет). Решил сделать небольшую программу, где пользователь вводит 2 числа с клавиатуры, а затем также вводит операцию, которую он хочет совершить с данными числами. После нажатия кнопки "Результат", в Label должно выводиться значение переменной Z.

5aa976fd5931d316260408.png

Написав следующий код, я озадачился:
public int Z { get; set; }
        public int X { get; set; }
        public int Y { get; set; }
        public string Operation { get; set; }

        public MainWindow()
        {
            InitializeComponent();
        }

        private void TextBox_TextChanged_1(object sender, TextChangedEventArgs e)
        {
            
        }

        private void TextBox_TextChanged_2(object sender, TextChangedEventArgs e)
        {
            
        }

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
        
           switch (Operation)
            {
                case "+":
                    Z = X + Y;
                   
                  
                 
                    break;

                case "-":
                    Z = X - Y;
                    break;

                case "*":
                    Z =X * Y;
                    break;

                case "/":
                    Z = X / Y;
                    break;
            }

        }


Привязка элементов в XAML выглядит следующим образом:
<TextBox x:Name="TextBoxX" 
                 HorizontalAlignment="Left" 
                 Height="16" 
                 TextWrapping="Wrap" 
                 VerticalAlignment="Top" 
                 Width="124"
                 Margin="53.5,83,0,0" 
                 Background="#FF232121" 
                 BorderBrush="{x:Null}" 
                 Grid.Column="1" 
                 Grid.ColumnSpan="2" 
                 Foreground="White" 
                 TextChanged="TextBox_TextChanged_1"
                 Text ="{Binding X}" 
                 TextInput="TextBoxX_TextInput"/>


Как сделать так, чтобы в Label выводился Z? И если есть различные замечания, то буду рад выслушать - мне полезно.

P.S. - За различные костыли не серчайте :)
  • Вопрос задан
  • 3458 просмотров
Решения вопроса 1
@SimasikS
Я есть
Можешь просто сделать в конструкторе
DataContext = this;

Потом чтобы твой Window реализовал INotifyPropertyChanged(возможно ошибка в названии)

Далее например для Z
private int _z;
public int Z { 
get => _z; 
set{
 _z = value;
 OnPropertyChanged(nameof(Z));
} }


И прибиндить
<TextBox Text ="{Binding Z}" />

Не очень красиво, но чтобы не заморачиваться и просто поюзать какие-то штуки в впф подойдет, а в дальнейшем и правда нужно смотреть на mvvm и вот это всё выносить в ViewModel
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@leremin
atypical programmer
Эти свойства должны быть не в классе формы, а в отдельном классе, который нужно назначить как DataContext формы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы