WPF C#: Menutup Window dari UserControl

Cara menutup Window yang berisi usercontrol dari code usercontrol yang bersangkutan di project WPF Window adalah dengan code seperti di bawah ini:

Window parent = Window.GetWindow(this);
parent.Close(); 


Bagaimana cara menggunakannya dalam sebuah project? Mari kita lihat contoh berikut. Di sini rani udah punya project WPF Window dengan nama WPFSample. Dan dia udah punya 1 file MainWindow1.xaml di dalamnya.


Kemudian rani tambahkan sebuah button dengan nama ButtonCall dengan property seperti code di bawah ini:

<Window x:Class="WPFSample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPFSample"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Button x:Name="ButtonCall" Content="Show" Width="200" Height="50" Click="ButtonCall_Click"/>
    </Grid>
</Window>


Yang diwarnai kuning terang adalah perubaannya yah.


<UserControl x:Class="WPFSample.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:WPFSample"
             mc:Ignorable="d" 
             Background="White"
             d:DesignHeight="350" d:DesignWidth="350">
    <Grid>
        <Button x:Name="ButtonClose" Content="Close" Width="200" 
                Height="50" Click="ButtonClose_Click" />
    </Grid>
</UserControl>


Code-behind:

Lalu di code belakang MainWindow.xaml.cs, rani coba panggil si UserControl yang ditampung dalam sebuah Window dan DockPanel dengan menggunakan code.

using System.Windows;
using System.Windows.Controls;

namespace WPFSample
{
 public partial class MainWindow : Window

 {
    public MainWindow()
    {
    InitializeComponent();
    }

    private void ButtonCall_Click(object sender, RoutedEventArgs e)
    {
        UserControl1 ctl = new UserControl1();
        Window wd = new Window();
        DockPanel pnl = new DockPanel();
        pnl.HorizontalAlignment = HorizontalAlignment.Stretch;
        pnl.VerticalAlignment = VerticalAlignment.Stretch;
        pnl.Children.Add(ctl);
        wd.Content = pnl;
        wd.Height = 350;wd.Width = 350;
        wd.ShowDialog();
    }
 }
}

Dan terakhir di UserControl1.xaml kita tambahkan code untuk menutup window.

using System.Windows;
using System.Windows.Controls;

namespace WPFSample
{
    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }

        private void ButtonClose_Click(object sender, RoutedEventArgs e)
        {
            Window parent = Window.GetWindow(this);
            parent.Close();

        }
    }
}

Mari kita coba run dan debug.


Download sample project di sini!

Post a Comment

0 Comments