如何将字符串从用户控件传递到WPF中的父窗口?

时间:2016-05-04 15:55:30

标签: c# wpf xaml user-controls

我使用文本框和按钮自定义UserControl。我将这个UC添加到主窗口,现在我希望当我点击UC内的按钮时,来自UC文本框的文本被转移到主窗口中的文本框或标签中。如果我是正确的,我应该制作自定义事件并将其绑定到某个地方或类似的东西,但我找不到任何有用的东西,所以我很乐意提供一些帮助或一个好的教程。

2 个答案:

答案 0 :(得分:5)

您可以通过使用UC中的属性轻松实现所需,并在MainWindow中订阅此属性的propertychanged事件。

在UserControl中

public class UserControl : BindableBase
{

    private string textboxText;
    public string TextBoxText
    {
       get { return textboxText; }
       set { SetProperty(ref textboxText,value); }
    }

}

因此,当文本框失去焦点时,属性textboxText会更新。

在MainWindow

public class MainWindow
{
    public UserControl UserControlInstance = new UserControl();
    public string textPropertyMainWindow;
    public MainWindow()
    {
       UserControlInstance.TextBoxText.PropertyChanged += PropertyChangedHandler;
    }

    private void PropertyChangedHandler(object obj)
    {
       textPropertyMainWindow = UserControlInstance.TextBoxText;
    }
}

希望你明白这一点。如果需要任何进一步的帮助,请恢复。

答案 1 :(得分:-1)

最简单的方法必须是这样,你最好练习,因为这可以基本上多次使用。

在类的字段中声明数据类型,如

string textwhichuserinputed;

并在Event或Method(wherever)中为变量赋值,例如

textwhichuserinputed= UCtextBox.Text;

赋值后,变量的值将设置为UCtextBox.Text。在赋值之前,该值为null。

然后,您可以使用textwhichuserinputed在类中的任何地方。

这是最简单,最基本的练习方法 这被称为全局变量。