2017-09-15 58 views
0

好吧,我必须使用大量的切换按钮和文本框,所以我给它们命名的方式是在按钮名称中添加字母“Q”将给出文本框的名称该按钮对应于。我已将所有按钮链接到检查事件上的相同方法,并使用此命名机制我希望操作与该按钮相对应的文本框。查找和操纵具有特定名称的UI控件

我到现在为止所做的是,以字符串格式生成文本框的名称。但我不知道如何使用这个字符串来操纵文本框。

private void OnbuttonClick(object sender, RoutedEventArgs e) 
{ 
     ToggleButton tb = (ToggleButton)sender; 
     if(tb.IsChecked==true) 
     { 
      string tbnam = ((ToggleButton)sender).Name; 
      string name2 = tbnam + "Q"; 

      ?????? (what happens from this point onward) 
     } 
    } 

“name2”是对应于名称为“tbnam”的切换按钮的文本框的名称。

我希望我已经明确了这个问题。

回答

1

在WPF中,一个更好的方法来做到这一点会暴露在视图模型对象的集合,并显示在用户界面与ItemsControlItemTemplate根据需要,将动态创建的ToggleButton /TextBox双尽可能多的迭代。如果你有兴趣,我会很乐意进入如何做到这一点。

但现在,你可以使用FindName(string)方法你的代码工作:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    ToggleButton tb = (ToggleButton)sender; 
    if (tb.IsChecked == true) 
    { 
     string name2 = tb.Name + "Q"; 

     TextBox tbox = FindName(name2) as TextBox; 

     // Check to see if tbox is null, do stuff with it 
    } 
} 
+0

这是给“TBOX为空”的错误 –

+0

这听起来像是由该名称的文本框是不是真的有在同一个窗口。在我的测试中,该代码起作用。你能为我提供足够的XAML来测试你拥有的同一个案例吗? –

+0

OH我发现了错误 –

相关问题