将数据从父窗口传递到子窗口并返回到父窗口WPF C#

时间:2014-08-01 15:48:02

标签: c# wpf window

我有2个WPF窗口,MainWindow& ChildWindow。我想在主窗口中单击一下以打开一个子窗口(我将把一些信息传递给子窗口)。在子窗口中,我希望MainWindow在子窗口中单击提交时更新。 工作流程: MainWindow - > TextBlock点击 - >创建新的ChildWindow参数:x_coord,y_coord,行号 - >显示儿童窗口 子窗口 - >提交btn点击 - >将文本作为字符串发送回主窗口

public MainWindow()
{
    InitializeComponent();
    WorkspaceVersion.MouseLeftButtonDown += new MouseButtonEventHandler(WorkspaceVersion_MouseLeftButtonDown); // text block click event
}

// mouse left button down 
private void WorkspaceVersion_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    Point position = e.GetPosition(WorkspaceVersion);
    var i = Math.Round(position.Y/15); // line number
    var commentWindow = new CommentWindow(position, i);
    commentWindow.Show();
}

///////////////  child window /////////////
// probably need to create a custom event to raise, then register to in mainwindow
public CommentWindow()
{
    InitializeComponent();
}

protected void SubmitButton_OnClick(object sender, EventArgs e)
{
    string comment = new TextRange(CommentBox.Document.ContentStart, CommentBox.Document.ContentEnd).Text;
    // raise event with custom args????
    // main window should be listening for this event??
    this.Close();
 }

1 个答案:

答案 0 :(得分:0)

你可以在这里做几件事。首先,我将研究MVVM模式,您可以使用它模拟窗口,然后在视图模型之间传递数据。

如果你想继续使用代码隐藏,你可以简单地将注释公开为子窗口的公共属性,然后你的主窗口就可以访问该属性。特别是如果您想将子窗口显示为模态。否则,在非模态设置中,您可以在子窗口上创建一个事件,只要单击提交按钮就会引发该事件并包含注释。如果这样做,请记住在不再需要子窗口后取消订阅该事件。