我有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();
}
答案 0 :(得分:0)
你可以在这里做几件事。首先,我将研究MVVM模式,您可以使用它模拟窗口,然后在视图模型之间传递数据。
如果你想继续使用代码隐藏,你可以简单地将注释公开为子窗口的公共属性,然后你的主窗口就可以访问该属性。特别是如果您想将子窗口显示为模态。否则,在非模态设置中,您可以在子窗口上创建一个事件,只要单击提交按钮就会引发该事件并包含注释。如果这样做,请记住在不再需要子窗口后取消订阅该事件。