WPF Application Sınıfı

26-12-2014
WPF'te uygulama başladığı zaman Application nesnesi yaratılır. Uygulama çalıştığı sürece, çeşitli event'lar meydana gelir. Son olarak, bu nesne destroy edilir ve uygulama kapanmış olur.

Application Nesnesi Yaratmak

Application nesnesi yaratmanın en temel yolu Main() metodu içerisinde manuel olarak yaratmaktır:

using System;
using System.Windows;
public class Startup
{
    [STAThread()]
    static void Main()
    {
        // Application nesnesi yaratiliyor
        Application app = new Application();
        // Ana pencere yaratiliyor. Bu pencere ekranda ilk gosterilecek penceredir
        Window1 win = new Window1();
        //Uygulama calistiriliyor
        app.Run(win);
    }
}

Ana window (pencere) kapatıldığı zaman Main metodundaki Application nesnesinin Run metodu çalışır ve bu metodtan sonra yazılmış kodlar da çalıştıktan sonra uygulama kapatılmış olur.

        Visual Studio'da bir uygulama yarattığımız zaman, temel Application sınıfı kullanılmaz. Onun yerine Application sınıfından türeyen sınıf kullanılır. Bunun nedeni karmaşık uygulamalarda event handling işlemlerinde ana Application sınıfına event-handling kodlarını ekleyemeyeceğimiz için bu şekilde kullanmak daha mantıklıdır.

Visual Studio'da WPF uygulaması yarattığımız zaman App.xaml isimli bir dosya oluşturulur. Bu dosyanının içeriği aşağıdaki gibidir:

<Application x:Class="TestApplication.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="Window1.xaml"
             >
</Application>

App.xaml isimli dosya ile birlikte App isimli bir sınıf ta yaratılır. Örnekteki TestApplication.App ifadesindeki App bu sınıfı temsil eder. TestApplication ise namespace'i ifade eder. App sınıfı Application sınıfından türetilir. Ayrıca StartupUri attribute'si ile ekranda ilk gösterilecek pencere belirtilir.

Not: Application sınıfı iki parça halinde tanımlanmıştır. Bir parçası compile zamanında otomatik oluşur. Bu kısımda Main metodu bulunmaktadır. İçeriği aşağıdaki kod parçasına benzer:

using System;
using System.Windows;
public partial class App : Application
{
    [STAThread()]
    public static void Main()
    {
        TestApplication.App app = new TestApplication.App();
        app.InitializeComponent();
        app.Run();
    }
    public void InitializeComponent()
    {
        this.StartupUri = new Uri("Window1.xaml", System.UriKind.Relative);
    }
}

Eğer bu sınıfın içeriğini görmek isterseniz obj\Debug klasörü içerisindeki App.g.cs dosyasına bakabilirsiniz.

Application sınıfının ikinci kısmı App.xaml.cs gibi bir dosyada bulunur. Bu sınıfa uygulamanın event-handling kodlarını yerleştirebiliriz:

public partial class App : Application
{
}

Uygulamayı çalıştırdığımız zaman bu kısım otomatik olarak üretilen diğer kısım ile birleştirilir.


Uygulamanın Kapatılması

Uygulamanın nasıl kapatılacağını belirlemek için Application sınıfının ShutdownMode isminde bir property'si vardır. Application nesnesini kendimiz üretiyorsak, ShutdownMode property'i değerini değiştirebiliriz veya App.xaml dosyasına sahipsek, bu dosya içinde değiştirebiliriz. Bu property üç farklı değerden birini alır:

OnLastWindowClose Varsayılan değerdir. Bir pencere kalana kadar uygulama çalışır. Eğer tüm pencereler kapatılırsa uygulama kapatılmış olur.
OnMainWindowClose App.xaml dosyasında tanımlanan ana pencere kapatıldığı zaman uygulama kapatılmış olur.
OnExplicitShutdown Tüm pencereler kapatılsa bile, Application.Shutdown() metodunu çağırmadıkça uygulama kapanmaz.

App.xaml dosyasında aşağıdaki gibi kullanabiliriz:

<Application x:Class="TestApplication.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="Window1.xaml"
             ShutdownMode="OnMainWindowClose"
             >
</Application>

© 2019 Tüm Hakları Saklıdır. Codesenior.COM