#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)