[英]How to close parent windows using WPF User Control
假設我有兩個WPF窗口:window_One和window_Two。
我該如何實現這種情況?
在您創建的自定義控件內。 您可以在按鈕事件單擊中訪問父窗口。
通過使用可視樹:
var myWindow = (Window)VisualParent.GetSelfAndAncestors().FirstOrDefault(a => a is Window);
myWindow.Close();
或簡單地說:
var myWindow = Window.GetWindow(this);
myWindow.Close();
當然,另一種選擇是創建一個自定義事件,顯示“MyButtonClicked”,然后讓托管UserControl的窗口監聽此事件,當事件被觸發時,關閉當前窗口。
干杯!
您可以嘗試使用EventAggregator在不同的ViewModel上實現此事件驅動的邏輯。
http://www.codeproject.com/Articles/355473/Prism-EventAggregator-Sample
我們實現了這個來關閉Window2從Window2打開,但它應該適用於任何場景,如果你將這些代碼部分放在適當的區域,從任何地方關閉任何窗口:
創建一個存儲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
}
}
}
在父窗口(要關閉的窗口 - 在這種情況下為Window2?)中,在其onload事件中,將其Window
對象設置為CloseWindow.WinObject
:
CloseWindow.WinObject = (Window)this;
然后,在child的onload事件中(或者,在OP的情況下,在Window2的User Control的按鈕事件中),讓它執行CloseParent()
函數:
if (CloseWindow.WinObject != null)
CloseWindow.CloseParent();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.