簡體   English   中英

WPF應用程序中的彈出窗口

[英]Pop-up window in a WPF application

我有一個C#WPF應用程序,該應用程序顯示在xaml(P屏幕)中使用Grid控件。對於網格中的每一行,我都有一個名為Details的列。單擊此列中的項目會顯示一個彈出窗口,其中也包含xaml(C屏幕)中的網格。 P的視圖模型中的我的項目單擊事件具有以下代碼:

var myChildWindow = new MyGridView();
myChildWindow.Show();

如果用戶多次單擊該項目,我只想突出顯示現有的C彈出窗口。如果沒有現有的窗口打開,那么只有我想打開一個新窗口。

我已經為Winforms應用程序滿足了類似的要求,請問如何為WPF應用程序解決呢?

謝謝。

首先,您需要在click事件之外聲明myChildWindow ,以便可以從多個事件訪問它。 所以,

MyGridView myChildWindow;

超出了click事件,可能是私有變量。

然后,在您的click事件中查看它是否為null ,如果是,則創建它。

if (myChildWindow == null)
{
    myChildWindow = new MyGridView();
    myChildWindow.Show();
}

您可以保留對窗口的引用,並在關閉窗口時刪除該引用:

MyGridView  myChildWindow;
private void Button_Click(object sender, RoutedEventArgs e)
{
    if (myChildWindow == null)
    {
        myChildWindow = new MyGridView();
        myChildWindow.Closed += MyChildWindow_Closed;
        myChildWindow.Show();
    }
    else
    {
        myChildWindow.Activate();
    }
}

private void MyChildWindow_Closed(object sender, EventArgs e)
{
    myChildWindow.Closed -= MyChildWindow_Closed;
    myChildWindow = null;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM