The Artima Developer Community
Sponsored Link

.NET Buzz Forum
Code-Only Anwendungen mit WPF entwickeln

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
-

Posts: 1524
Nickname: nitronic
Registered: Jul, 2006

Norbert Eder works as a software architect.
Code-Only Anwendungen mit WPF entwickeln Posted: Apr 14, 2008 2:10 AM
Reply to this message Reply

This post originated from an RSS feed registered with .NET Buzz by -.
Original Post: Code-Only Anwendungen mit WPF entwickeln
Feed Title: Norbert Eder - Living .NET
Feed URL: http://feeds.feedburner.com/NorbertEder-Livingnet
Feed Description: Copyright (c)2005, 2006 by Norbert Eder
Latest .NET Buzz Posts
Latest .NET Buzz Posts by -
Latest Posts From Norbert Eder - Living .NET

Advertisement
Eine WPF-Anwendung muss nicht immer mit Hilfe von XAML geschrieben werden, auch ohne XAML kann eine WPF-Anwendung erstellt werden. Warum dies notwendig ist könnte mehrere Gründe haben, der wohl oft vorkommendste: XAML ist nicht bekannt und es fehlt die Einarbeitungszeit. Eine andere Möglichkeit besteht natürlich auch darin, dass zur Laufzeit ein Fenster dynamisch erstellt werden sollen.

Wie ist also vorzugehen: Grundsätzlich kann eine ganz normale WPF-Anwendung erstellt werden. Die Dateien App.xaml und Window1.xaml sind anschließend zu löschen (die Codebehind-Dateien werden automatisch mit gelöscht). Der Vorteil dieser Variante liegt darin, dass die notwendigen Referenzen alle dem Projekt hinzugefügt werden und somit diesbezüglich keinerlei Aufwand entsteht (natürlich kann dies auch manuell geschehen).

Wer dies manuell machen möchte, muss folgende Referenzen seinem Projekt hinzufügen:
  • PresentationCore
  • PresentationFramework
  • WindowsBase


Nun wird im ersten Schritt eine neue Klasse App.cs dem Projekt hinzugefügt. Diese erbt von Application und enthält den notwendigen Einstiegspunkt.
public class App : Application
{
    [STAThread]
    static void Main(string[ args) 
    {
        Application app = new Application();
        app.Run(new MainWindow());
    }
}

Im Grunde passiert nichts anderes, als dass eine neue Application-Instanz erstellt wird und deren Methode Run aufgerufen wird. Als Parameter erhält sie eine Instanz des Typs MainWindow. MainWindow ist so aktuell noch nicht verfügbar, werden wir jedoch im nächsten Schritt erstellen.
public class MainWindow : Window
{
    StackPanel mainPanel = null;
    Label label1 = null;
    Button button1 = null;

    private void InitializeComponent()
    {
        mainPanel = new StackPanel();
        mainPanel.Name = "MainPanel";
        mainPanel.Orientation = Orientation.Vertical;

        label1 = new Label();
        label1.Content = "Code Only App";
        label1.FontSize = 18;

        button1 = new Button();
        button1.Content = "Close";

        mainPanel.Children.Add(label1);
        mainPanel.Children.Add(button1);

        this.Content = mainPanel;
    }

    public MainWindow()
    {
        InitializeComponent();

        Init();

        button1.Click += 
        new RoutedEventHandler(button1_Click);
    }

    void button1_Click(
        object sender, 
        RoutedEventArgs e)
    {
        Application.Current.Shutdown(0);
    }

    private void Init()
    {
        this.Title = "Code Only App";
        this.Height = 300;
        this.Width = 300;
    }
}

Die Klasse MainWindow.cs erbt von Window und stellt unser Hauptfenster dar. Wie zu sehen ist, werden nun lediglich durch Code (kein XAML) die einzelnen anzuzeigenden Elemente erstellt. Sämtliche Methoden wurden manuell erstellt, d.h. es gibt hier keinen Code, der irgendwie automatisch erstellt wurde.

Das Ergebnis kann in der nachfolgenden Grafik bewundert werden. Natürlich kann auf diese Variante ebenfalls ein hübsches Design erzeugt werden. Diese Demo sollte jedoch nur grundsätzlich zeigen, wie Code-Only-Applikationen erstellt werden können.


Read: Code-Only Anwendungen mit WPF entwickeln

Topic: How to tell the screen resolution from within a Silverlight app Previous Topic   Next Topic Topic: Learning SQL 2008

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use