2009-11-26 115 views
1

WPF可以通过它们的值获取所有UI控件吗?在例子中,我有一些窗口与一些文本框,并在另一个窗口中,我想从第一个窗口文本框或其他输入元素输入值。在WinForms中是这样的: form.Controls;WPF - 可以通过它们的值获取所有UI控件

回答

2

当然,你必须知道你想要什么样的性质,钻你可以检查,但你应该有照顾的行为,而不是iffing每个控制

public string GetValue(Control x) 
{ 
    if (x is TextBox) return ((TextBox) x).Text; 
    if (x is ComboBox) return ((ComboBox)x).SelectedValue.ToString(); 
    if (x is Label) return ((Label)x).Content .ToString(); 
    //... 
} 


foreach (Control x in theGrid.Children) 
{ 
     string field = GetValue(x); 
    //[...] 
} 
一些OO模式
+0

我把帆布放在我的窗口和那个画布上的一些文本框中,但是有些东西与你的代码不符:var children =(从canvas1中的c中选择c); 错误:canot解析符号“select”。 – Vytas 2009-11-26 16:24:33

+0

我已经在UIEleement集合中对它进行了更改 – Peter 2009-11-26 16:26:44

+0

Yuor编辑的代码看起来像我正在寻找的东西。但如何检查x是否肯定TextBox?在网格中可能有很多不同的元素,比如标签,组合框等等。 – Vytas 2009-11-26 16:30:25

0

难道你不能只在第一个窗口中命名文本框,并将文本值拉出?

<!--textbox in window 1--> 
<TextBox Name="myFirstTextBox>Hello</TextBox> 

<!--textbox in window 2--> 
<TextBox Name="mySecondTextBox></TextBox> 


    //in your code behind, when second window opens 
    mySecondTextBox.Text = myFirstTextBox.text; 
+0

其实我需要这个“技巧”来做这样的工作 - 从数据库中获取一些数据,automaticaly将DataRow中的值放到UI控件(如TextBoxes,Comboboxes等)中。它应该是元素名称的dony。例如,如果文本框名称是“AbilityID”,则此文本框必须填充来自此数据行列“AbilityID”的数据。 Yuor的例子不是通用的,就像一个硬编码。 – Vytas 2009-11-26 16:12:03

相关问题