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

本文关键字:窗口 返回 数据 | 更新日期: 2023-09-27 18:15:55

我有两个WPF窗口,MainWindow &ChildWindow。我想在主窗口中单击事件打开子窗口(我将传递一些信息到子窗口)。在子窗口中,我希望主窗口在子窗口中单击提交时更新。工作流程:主窗口-> 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();
 }

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

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

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