2017-01-04 6 views
0

Я WPF noob, перейдя из 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

Какая ваша ошибка? Что не работает? Трудно помочь без дополнительной информации. – CodeLikeBeaker

+0

ошибка находится в «амплитуде [n] = textBox.text;» line - "объект не содержит определения для текста и текста метода расширения" –

+0

Где определяется 'амплитуда []'? И 'FindName()'? –

ответ

0

Вместо того

amplitude[n] = textBox.text; 

что вы хотите amplitude[n] = ((TextBox) textbox).Text;

Это называется литье.

Но если вы делаете это, вы, вероятно, не делаете это правильно. Я бы предложил вам прочитать больше о шаблоне проектирования MVVM, поскольку он сильно отличается от формы Win. То, что вы делаете прямо сейчас можно сделать легко и чисто с окантовкой

Edit:

object textBox = new TextBox(); И не нужен. вам не нужно инициализировать новый TextBox. Должно быть что-то вроде

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

Вот и все, спасибо за вашу помощь! Мне нужно будет прочитать больше, прошло некоторое время с момента перехода на новую технологию. –

+0

Я добавлю к этому ответу, вместо того, чтобы кастинг, строка объявления должна быть либо var textbox = new TextBox(), либо TextBox textBox = новый TextBox(); если нет другой причины, по которой вы хотите, чтобы переменная была объектом. –

+0

@ S. Спасибо за указание. отредактированный – Steve

Смежные вопросы