用户控件之间的交互

时间:2011-11-09 03:35:53

标签: c# wpf

我在wpf应用程序中有2个用户控件。在我的用户控件A中,当我单击一个按钮时,它将从usercontrol B中获取文本框内的文本。当我单击A中的按钮时,如何访问文本框中的文本?

  public partial class UserControlB : UserControl
  {
      public string TextBoxText { get { return this.TextBoxB.Text; } }
  }

然后在usercontrol A中,当我点击按钮

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        String s = UserControlB.TextBoxText ;

    }

4 个答案:

答案 0 :(得分:2)

在B中添加一个属性,返回TextBox的文本:

public class UserControlB
{
    public string TextBoxText { get { return this.TextBox1.Text; } }
}

在xaml中找到UserControl B的实例,然后按如下方式调用该属性:

string txt = this.UserControlB.TextBoxText;

答案 1 :(得分:0)

我知道这是一个简短的答案,但我认为FindControl(“textboxName”)应该有效。

string text = userControlB.FindControl(“textbox”)

答案 2 :(得分:0)

在您的问题中,您没有正确引用UserControlB

private void button1_Click(object sender, RoutedEventArgs e)     
{
    String s = UserControlB.TextBoxText ;      
}

在这里,您要查看名为UserControlB,而不是UserControlB的对象或实例。换句话说,您没有指定要查看的 UserControlB。如果屏幕上有五个UserControlB,按钮如何知道要使用哪个?

阅读Classes and Objects以了解类(如UserControlB)和对象(您可以在程序中引用和使用的项目)之间的区别。

如果您要使用页面或视图,UserControlB应该有Name。找到名称后,您可以像这样引用它:

// inside the control which contains your UserControlB
public MainPage()
{
    // find it according to its Name property
    UserControlB theOneIWantToUse = this.UserControlB_1;

    // once you identify it, you can get the Text value from it
    String s = theOneIWantToUse.Text;
}

答案 3 :(得分:0)

你可以试试这个:

在UserControl A中,

  

private void button1_Click(object sender,RoutedEventArgs e)      {

   MainWindow rootWindow = Application.Current.MainWindow as MainWindow;
   String s = (String)rootWindow.B.TextBoxB.text;
     

}