使用字符串值按名称访问文本框中的文本

时间:2017-01-04 21:37:33

标签: c# wpf

我是一个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;
        }

我尝试了不同的功能,但找不到有效的功能,有人能指出我正确的方向吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

而不是

amplitude[n] = textBox.text;

你想要的是amplitude[n] = ((TextBox) textbox).Text;

这称为铸造。

但如果你这样做,那么你可能做得不对。我建议你阅读更多有关MVVM设计模式的内容,因为它与Win形式有很大不同。你现在正在做的事情可以通过Binding轻松而干净地完成

编辑:

不需要object textBox = new TextBox();。您不需要初始化新的TextBox。应该像

TextBox textbox;
....
textbox = (TextBox) FindName(....);