[英]Why manipulating an UI control requires to be done within the thread in which it was created?
[英]Finding and manipulating a UI control with a particular Name
好的,所以我必须使用大量的切换按钮和文本框,因此我以这样的方式命名它们,即在按钮的名称上添加字母“ Q”将给出该按钮对应的文本框的名称。 我已将所有按钮链接到选中事件的相同方法,并使用此命名机制I,希望操纵按钮对应的文本框。
到目前为止,我要做的是以字符串格式生成文本框的名称。 但我不知道如何使用此字符串来操纵文本框。
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”的切换按钮相对应的文本框的名称。
希望我已经解决了这个问题。
在WPF中,一种更好的方法是在ViewModel中公开对象集合,并在UI中显示带有ItemTemplate
的ItemsControl
, ItemTemplate
会根据需要动态创建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
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.