Как сохранить ввод текста пользователем в коде из текстового поля XAML WPF

#c# #wpf #string #xaml #code-behind

#c# #wpf #строка #xaml #коде за

Вопрос:

мой вопрос довольно прост.

Как указано в названии, я хотел бы знать, как сохранить пользовательский текст, введенный в текстовое поле WPF из XAML, в виде строкового элемента в коде. Концепция заключается в том, что пользователь вводит текст в текстовое поле, затем, после нажатия кнопки «Готово», значения в этом текстовом поле сохраняются в коде в виде строковых элементов (которые могут быть введены в массив).


XAML

 <Window x:Class = "WpfApplication3.MainWindow" 
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:local = "clr-namespace:WpfApplication3" 
mc:Ignorable = "d" Title = "MainWindow" Height = "350" Width = "604">
<Grid Background = "White" Margin="0,4,0,-4">
    <Grid.RowDefinitions>
        <RowDefinition Height = "*" />
        <RowDefinition Height = "*" />
        <RowDefinition Height = "*" />
        <RowDefinition Height = "*" />
        <RowDefinition Height = "*" />
    </Grid.RowDefinitions>

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width = "*" />
    </Grid.ColumnDefinitions>

    <Label Content = "Employee Info" FontSize = "15"
     FontWeight = "Bold" Grid.Column = "0" Grid.Row = "0"/>

    <StackPanel Grid.Column = "0" Orientation = "Horizontal" Margin="0,38,0,26" Grid.RowSpan="2">
        <Label Content = "Name"  VerticalAlignment = "Center" Width = "70"/>
        <TextBox Name = "txtName" Text = "Muhammad Ali" VerticalAlignment = "Center"
        Width = "200">
        </TextBox>
    </StackPanel>

    <StackPanel Grid.Column = "0" Grid.Row = "1" Orientation = "Horizontal" Margin="0,2,0,62" Grid.RowSpan="2">
        <Label Content = "ID" VerticalAlignment = "Center" Width = "70"/>
        <TextBox Name = "txtID" Text = "421" VerticalAlignment = "Center"
        Width = "50">
        </TextBox>
    </StackPanel>

    <StackPanel Grid.Column = "0" Grid.Row = "1" Orientation = "Horizontal" Margin="0,32" Grid.RowSpan="2">
        <Label Content = "Age" VerticalAlignment = "Center" Width = "70"/>
        <TextBox Name = "txtAge" Text = "32" VerticalAlignment = "Center"
        Width = "50"></TextBox>
    </StackPanel>

    <StackPanel Grid.Column = "0" Grid.Row = "1" Orientation = "Horizontal" Margin="0,61,0,4" Grid.RowSpan="2">
        <Label Content = "Position" VerticalAlignment = "Center" Width = "70"/>
        <TextBox Name = "txtPosition" Text = "Programmer" VerticalAlignment = "Center"
        Width = "200"></TextBox>

    </StackPanel>
    <Button Click ="Button_Click" x:Name="button" Content="Finished" HorizontalAlignment="Left" Margin="172,21,0,0" Grid.Row="4" VerticalAlignment="Top" Width="237"/>

</Grid>
  

КОДЕ ЗА

 namespace WpfApplication3
{
    public partial class MainWindow : Window


    string EmpName = "blank";
    string EmpID = "blank";
    string EmpAge = "blank";
    string EmpPosition = "blank";

    public MainWindow()
    {
        InitializeComponent();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        txtName = EmpName;   //Here's where I attempt to store the TextBox Information
        txtID = EmpID;
        txtAge = EmpAge;
        txtPosition = EmpPosition;
    }


  }
}
  

Спасибо, что взглянули!

Комментарии:

1. Вы пробовали txtName. Text = EmpName? В настоящее время вы меняете весь элемент управления текстовым полем, а не только текст в нем. Чтобы прочитать данные из графического интерфейса пользователя в ваш код, просто поменяйте местами эти два, чтобы получить EmpName = txtName.Text. Вероятно, вам следует посмотреть, как работают назначения и свойства в C #, это может помочь вашему пониманию.

2. Ах, так что это должно было быть отменено. Так просто! Большое вам спасибо!

3. Или просто привяжите текстовое поле к свойству, которое вы хотите использовать. Возможно, вы захотите поискать «MVVM в WPF», как только получите основы назначений и свойств.

Ответ №1:

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

 private void button_Click(object sender, RoutedEventArgs e)
{
    EmpName = txtName.Text;             // Use the Text property to get the (string) value of the entered text.
    EmpID = txtID.Text;                 // The left hand side of the assignment operator gets assigned the right hand side expression.
    EmpAge = txtAge.Text;               
    EmpPosition = txtPosition.Text;
}
  

Пожалуйста, обратите внимание, что многие другие элементы управления хранят свои значения в содержимом свойства (например, Label)