如何在WPF中将值从一个用户控件传递到另一个用户控件。

时间:2014-05-29 09:22:58

标签: c# .net wpf user-controls window

我正在开发我的Project的GUI作为WPF中的UserControl。而我正试图在另一个WPF窗口中使用它。它工作正常,但真正的问题是将特定值从一个用户控件传递到另一个用户控件。

eg: 
UserControl1 is displayed within WPFWindow1 
UserControl2 is displayed within WPFWindow2 

MainWindow opens Window1 , Window1 opens Window 2 . 

所以要求是在Window2中,当用户点击按钮时,它应该将值传递给Window1。

以下是我做的一个示例项目,旨在让它更好地理解(以实物为准):http://goo.gl/h0zpL7

1 个答案:

答案 0 :(得分:0)

此处DelegatesEvents是我建议的最佳做法。在Window2中创建DelegateEvent,如下所示

public partial class Window2 : Window
{
    public delegate void MyDelegate(object value);
    public event MyDelegate MyCustomEvent;

    public Window2()
    {
        InitializeComponent();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        MyCustomEvent(100);
    }
}

在Window1中订阅MyCustomEvent,如下所示

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        Window2 wnd = new Window2();
        wnd.MyCustomEvent += wnd_MyCustomEvent;
        wnd.Show();
    }

    void wnd_MyCustomEvent(object value)
    {
        MessageBox.Show(value.ToString());
    }
}