4

UserControl を設計し、 MainWindow のボタンをクリックすると、これをポップアップ ウィンドウとして表示する予定です。

このリンクをたどりました。ユーザーコントロールをダイアログウィンドウとして開きます。

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 フォームが初めてです。この問題を解決するために私を案内してもらえますか。

4

2 に答える 2

7

Window現在の親を取得してから、親を取得する必要がありUserControlますClose

そのようなことを達成するための1つの解決策は、次のようなものです:

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

ご覧のとおり、これはWindow.GetWindowメソッドに基づいています。その説明は次のとおりです。

依存関係オブジェクトが配置されているコンテンツ ツリーをホストする Window オブジェクトへの参照を返します。

于 2013-11-06T11:46:04.983 に答える
1

試す

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

それはうまくいくはずです:-)

于 2013-11-06T11:35:19.253 に答える