在C#WPF GroupBox中查找特定的动态TextBox

时间:2015-12-09 21:09:32

标签: c# wpf

我已经在我的主网格中添加了一个GroupBox,并使用控件动态填充它。我需要在onClick事件中获得该GroupBox中的特定文本框。我能够遍历GroupBox并且很好,就像这样......

  foreach (Control ctl in ((Grid)gpMccEngineProperties.Content).Children)
  {
      if (ctl.GetType() == typeof(TextBox))
      {
          TextBox textbox = (TextBox)ctl;
          PropertyValue propertyValue = new PropertyValue();
          propertyValue.Value = textbox.Text;
      }
  }

...但如果我只是想访问一个特定的TextBox,我会继续使用null值返回。这就是我试图获得它的方式......

TextBox txt = ((Grid)gpMccEngineProperties.Content).Children.OfType<TextBox>().Where(t => t.Name == "PropertyId_9") as TextBox;

...其中PropertyId_9是我动态添加到GroupBox的文本框的名称。我知道如何获得该文本框以便我能获得它的价值吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您使用了错误的Linq方法。该代码返回一个IEnumerable的TextBoxes,而不仅仅是TextBox。使用Single或SingleOrDefault而不是Where:

TextBox txt = ((Grid)gpMccEngineProperties.Content).Children.OfType<TextBox>().Single(t => t.Name == "PropertyId_9");