簡體   English   中英

我們如何關閉自定義UserControl作為對話框?

[英]How do we Close a custom UserControl as Dialog?

我設計了一個UserControl,並計划在單擊MainWindow中的按鈕時將其顯示為彈出窗口。

我按照這個鏈接 用於打開usercontrol作為對話框窗口。

private void btnInstApp_Click(object sender, RoutedEventArgs e)
    {
        Window objWindow = new Window
        {
            Title = "Title 12345",
            WindowStyle = WindowStyle.None,
            WindowStartupLocation = WindowStartupLocation.CenterScreen,
            AllowsTransparency=true,
            Width = 500,
            Height = 200,
            Content = new ucInstrumentApp()
        };

        objWindow.ShowDialog();
    }

我使用None作為WindowStyle 並在UserControl中設計了一個自定義關閉按鈕,用於關閉彈出/對話框窗口。 我嘗試了下面給出的代碼。 但它不起作用。

 private void btnClose_Click(object sender, RoutedEventArgs e)
 {      
        //this.Close(); //:not working      
        Window objWindow = new Window
        {               
            Content = new ucInstrumentApp()
        };

        objWindow.Close();
 }

我是WPF / Windows表單的新手。 你能指導我解決這個問題。

您需要從當前UserControl獲取父Window ,然后Close它。

實現這樣的事情的一個解決方案可能是以下一個:

    private void btnClose_Click(object sender, RoutedEventArgs e)
    {
         Window parentWindow = Window.GetWindow((DependencyObject)sender);
         if (parentWindow != null)
         {
             parentWindow.Close();
         }
    }

如您所見,它基於Window.GetWindow方法,這里是它的描述:

返回對承載依賴項對象所在的內容樹的Window對象的引用。

嘗試

private void btnClose_Click(object sender, RoutedEventArgs e)
{     
    this.Close();
}

這應該工作:-)

暫無
暫無

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

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