我对此很陌生,到目前为止我还没有找到解决我问题的任何解决方案。
我想通过以编程方式添加控件来使用控件,这些控件正常工作,内容显示在窗口中,但是一旦我想通过按钮保存内容,事件处理程序就不会获取传递给它的变量。
我有以下情况,我不知道我错过了什么。 (WPF4,EF,VS2010)
在XAML中,我有一个网格,我想添加例如。一个文本框和一个来自代码的按钮,如
<Grid Name="Grid1">
<Grid.RowDefinitions>
<RowDefinition Height="100"></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="75*"></ColumnDefinition>
<ColumnDefinition Width="25*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBox Grid.Row="2" Name="textBox1" />
</Grid >
在代码隐藏中:
private void CheckMatching ()
{
TextBox textBox2 = new TextBox();
textBox2.Text = "textbox to fill";
textBox2.Name = "textBox2";
Grid1.Children.Add(textBox2);
Button SaveButton = new Button();
SaveButton.Name = "Save";
SaveButton.Content = "Save";
SaveButton.Click += new RoutedEventHandler(SaveButton_Click);
Grid1.Children.Add(SaveButton);
}
private void SaveButton_Click ( object sender, RoutedEventArgs e )
{
// works fine
string ShowContent1 = textBox1.Text;
// It doesn't show up in intellisense, so I cant use it yet
string ShowContent2 = textBox2.Text;
}
我可以访问XAML中的文本框内容或XAML中设置的所有内容,但是我没有获得我在代码隐藏中设置的任何内容。内容本身显示在窗口中。
我已经尝试了不同的方法。到目前为止没有任何工作。
答案 0 :(得分:0)
这个问题不是WPF问题,而是面向对象计算机编程的基本问题。
如何期望在textBox2
方法中本地进行delcared和创建的对象(CheckMatching
)可以在SaveButton_Click
等其他方法中使用?
为此,您可以将其作为课程级别。
private TextBox textBox2;
private void CheckMatching ()
{
this.textBox2 = new TextBox();
this.textBox2.Text = "textbox to fill";
this.textBox2.Name = "textBox2";
Grid1.Children.Add(this.textBox2);
.....
}
private void SaveButton_Click ( object sender, RoutedEventArgs e )
{
string ShowContent1 = textBox1.Text; // works fine
string ShowContent2 = this.textBox2.Text; // should work too
}
然后你也可以用WPF方式做....
private void SaveButton_Click ( object sender, RoutedEventArgs e )
{
string ShowContent1 = textBox1.Text; // works fine
string ShowContent2 = ((TextBox)Grid1.Children[1]).Text; // should work too
}