假设我有两个 WPF 窗口:window_One 和 window_Two。
- window_One 有一个按钮,点击此按钮会打开 window_Two。
- window_Two 包含一个用户控件。
- 此用户控件有一个按钮,用于关闭 window_Two。
在您创建的自定义控件内部,您可以通过按钮事件点击从父窗口中访问它。
可以通过使用可视化树实现:
var myWindow = (Window)VisualParent.GetSelfAndAncestors().FirstOrDefault(a => a is Window);
myWindow.Close();
或者只需:
var myWindow = Window.GetWindow(this);
myWindow.Close();
当然,另一个选择是创建一个名为"MyButtonClicked"的自定义事件,然后让托管UserControl的窗口监听此事件。当事件被触发时,您可以关闭当前窗口。
干杯!
Window
对象和一个关闭它的函数:
CloseWindow.cs
public static class CloseWindow
{
public static Window WinObject;
public static void CloseParent()
{
try
{
((Window)WinObject).Close();
}
catch (Exception e)
{
string value = e.Message.ToString(); // do whatever with this
}
}
}
Window
对象设置为CloseWindow.WinObject
:CloseWindow.WinObject = (Window)this;
接着,在子元素的onload
事件(或者在Window2用户控件的按钮事件中),让它执行CloseParent()
函数:
if (CloseWindow.WinObject != null)
CloseWindow.CloseParent();
http://www.codeproject.com/Articles/355473/Prism-EventAggregator-Sample
您
和SO
。 - nam