我是一个WPF菜鸟,从WinForms转移到我试图通过名字用字符串访问文本框中的文本,基本上我需要WPF版本的Controls.Find(),我似乎无法找到有用的东西。这是我的代码;
<TextBox x:Name="amplitude0" HorizontalAlignment="Left" Height="20" TextWrapping="Wrap" VerticalAlignment="Top" Width="100" Canvas.Left="160" Canvas.Top="64" />
<TextBox x:Name="amplitude1" HorizontalAlignment="Left" Height="20" TextWrapping="Wrap" VerticalAlignment="Top" Width="100" Canvas.Left="280" Canvas.Top="64" />
......达到幅度9。和C#;
object textBox = new TextBox();
for (int n = 0; n <= 9; n++)
{
txtAmplitude = "amplitude" + n;
textBox = FindName(txtAmplitude);
amplitude[n] = textBox.text;
}
我尝试了不同的功能,但找不到有效的功能,有人能指出我正确的方向吗?
提前致谢
答案 0 :(得分:0)
而不是
amplitude[n] = textBox.text;
你想要的是amplitude[n] = ((TextBox) textbox).Text;
这称为铸造。
但如果你这样做,那么你可能做得不对。我建议你阅读更多有关MVVM设计模式的内容,因为它与Win形式有很大不同。你现在正在做的事情可以通过Binding轻松而干净地完成
编辑:
不需要object textBox = new TextBox();
。您不需要初始化新的TextBox。应该像
TextBox textbox;
....
textbox = (TextBox) FindName(....);