将数据从父窗口传递到子窗口并返回到父窗口
本文关键字:窗口 返回 数据 | 更新日期: 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模式,您可以使用它来建模窗口,然后在视图模型之间传递数据。
如果你想保持代码隐藏,你可以简单地将注释公开为子窗口的公共属性,然后你的主窗口可以访问该属性。特别是如果你想把子窗口显示为模态。否则,在非模态设置中,您可以在子窗口上创建一个事件,该事件将在单击提交按钮时引发,并将包含评论。如果您这样做,请记得在子窗口不再需要时取消订阅事件。