目前我有一个主表单,我从中调用一个弹出窗口,我在拼写检查器的单独XAML文件中创建。它被称为:
SpellCheckerPopupControl popupControl = new SpellCheckerPopupControl();
popupControl.SpellChecklistBox.Items.Clear();
//some code to check the word and populate the child listbox with spelling suggestions
popupControl.SpellCheckerPopup.IsOpen = true;
我在列表框中的SelectionChanged子项中设置了一个事件,以便将数据传递回主窗体,目前我只想将选择内容传递回主窗体,以便我可以选择所选单词和用它替换拼写错误的一个。不幸的是,我似乎无法将子表格事件中的数据传回父母。
SpellCheckerPopup的XAML只是一个<PopUp>
,里面有<ListBox>
。
仅仅出于测试目的,我试图只取结果的输出并将字符串粘贴到主文本框中,如下所示:MainPage.txtArticle.Text = s;
,但是当MainPage位可用时,它的所有元素都不是,因此我无法从儿童事件中操纵它们。
答案 0 :(得分:0)
制作窗口的属性
var window = new popupControl.Open();
然后在window.closed事件检查Window.txtArticle
。文本;
这应该有效。如果没有,则将它们绑定到后面代码中的属性。
[更新]
示例:
var window = new MyTestChildWindow();
//This is just to show how to change properties in the testwindow.
window.SomeProperty = true;
window.Show();
window.Closed += (s, ea) =>
{
if (window.DialogResult.ToBoolean())
{
// this is a property in the code behind.
if (window.SelectedItem != null)
{
//Property = property on mainpage
//window.SelectedItem = property in childwindow
this.Property = window.SelectedItem;
}
}
};
此代码会显示在您的主页面中。
希望这会有所帮助。
答案 1 :(得分:0)
您还可以在Program.cs文件中创建一个可以传递值的属性。然后,您可以访问该属性应用程序。只需使用:
Program.SomeProperty
答案 2 :(得分:0)
使用变量,在其他地方声明是一个问题的处方,因为没有什么可以保证“外部”数据的实际情况。
如果您的活动是路由活动,您可以随时查询OriginalSource并从中获取信息。如果您的活动不是路由活动,您可以创建附加活动并将弹出窗口传递给OriginalSource。