TOC

This article is currently in the process of being translated into Norwegian Bokmål (~51% done).

A WPF application:

The Window

Det første du møter når du begynner å bygge en WPF applikasjon er Window-klassen. Denne tjener som toppelement i vindus-layout og gir deg tilgang på standard ramme, tittellinje og knapper for maksimering, minimering og lukking av vindu. Et WPF vindu defineres av en kombinasjon av en XAML (.xaml) fil, der <Window> elementet er toppelement, samt en CodeBehind(.cs) fil. Hvis du bruker Visual Studio (Express) og du starter en ny WPF applikasjon, vil Visual Studio lage til kode for et default vindu for deg. Det vil si noenlunde slik ut:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>

    </Grid>
</Window>

x:class attributtet forteller XAML hvilken klasse som skal brukes. I vårt tilfelle Window1, som Visual Studio også har laget til for oss. Du finner dette i prosjekt-tre visningen i Visual Studio, som en undernode i XAML filen. Dette vil normalt se slik ut:

using System;
using System.Windows;
using System.Windows.Controls;
//…more using statements

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }
    }
}

Som du ser, er Window1 klassen definert som partial. Dette er fordi klassen kombineres med koden i XAML fil under kjøring av applikasjonen, slik at vinduet vises slik du har designet det. Det er kallet til InitializeComponent() som er ansvarlig for at dette skjer. Noe som kreves for å starte applikasjonen med et vindu der alle grunnleggende vindusfunksjoner virker som de skal.

Hvis vi går tilbake til XAML filen, vil du legge merke til et par interessante attributter innunder Window-elementet, som Title, som definerer vindus-tittel ( vist i tittellinje) såvel som Width og Height attributtene som definerer vindus-dimensjoner ved oppstart. I tillegg er det noen få definsjoner av navneområder (namespaces). Vi vil se nærmere på disse i kapitlene om XAML.

Du vil også legge merke til at Visual Studio har laget til en Grid-kontroll for oss inne i Window-kontrollen. Grid-kontrollen er ett av WPF panelene. Det kunne vært et hvilket som helst panel eller kontroll, men en Window-kontroll kan kun ha EN underkontroll. En Panel-kontroll, som kan inneholde flere underelementer, er vanligvis et godt valg. Senere i dette kurset, skal vi ta en grundigere titt på de forskjellige panelene som er tilgjengelig, da de er spesielt viktige i WPF.

Important Window properties

WPF Window-klassen har en haug med interessante attributter du kan definere for å kontrollere hvordan programvinduet vil se ut og oppføre seg. Her er en kort liste over de mest interessante attributtene:

Icon - Allows you to define the icon of the window, which is usually shown in the upper left corner, to the left of the window title.

ResizeMode - This controls whether and how the end-user can resize your window. The default is CanResize, which allows the user to resize the window like any other window, either by using the maximize/minimize buttons or by dragging one of the edges. CanMinimize will allow the user to minimize the window, but not to maximize it or drag it bigger or smaller. NoResize is the strictest one, where the maximize and minimize buttons are removed and the window can't be dragged bigger or smaller.

ShowInTaskbar - The default is true, but if you set it to false, your window won't be represented in the Windows taskbar. Useful for non-primary windows or for applications that should minimize to the tray.

SizeToContent - Decide if the Window should resize itself to automatically fit its content. The default is Manual, which means that the window doesn't automatically resize. Other options are Width, Height and WidthAndHeight, and each of them will automatically adjust the window size horizontally, vertically or both.

Topmost - The default is false, but if set to true, your Window will stay on top of other windows unless minimized. Only useful for special situations.

WindowStartupLocation - Controls the initial position of your window. The default is Manual, which means that the window will be initially positioned according to the Top and Left properties of your window. Other options are CenterOwner, which will position the window in the center of it's owner window, and CenterScreen, which will position the window in the center of the screen.

WindowState - Controls the initial window state. It can be either Normal, Maximized or Minimized. The default is Normal, which is what you should use unless you want your window to start either maximized or minimized.

There are lots of other attributes though, so have a look for yourself and then move on to the next chapter.