TOC

This article is currently in the process of being translated into Bulgarian (~38% done).

A WPF application:

The Window

When creating a WPF application, the first thing you will meet is the Window class. It serves as the root of a window and provides you with the standard border, title bar and maximize, minimize and close buttons. A WPF window is a combination of a XAML (.xaml) file, where the <Window> element is the root, and a CodeBehind (.cs) file. If you're using Visual Studio (Express) and you create a new WPF application, it will create a default window for you, which will look something like this:

<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>

The x:class attribute tells the XAML file which class to use, in this case Window1, which Visual Studio has created for us as well. You will find it in the project tree in VS, as a child node of the XAML file. By default, it looks something like this:

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();
        }
    }
}

As you can see, the Window1 class is definied as partial, because it's being combined with your XAML file in runtime to give you the full window. This is actually what the call to InitializeComponent() does, which is why it's required to get a full functioning window up and running.

If we go back to the XAML file, you will notice a couple of other interesting attributes on the Window element, like Title, which defines the title of the window (shown in the title bar) as well as the starting width and height. There are also a couple of namespace definitions, which we will talk about in the XAML chapters.

You will also notice that Visual Studio has created a Grid control for us inside the Window. The Grid is one of the WPF panels, and while it could be any panel or control, the Window can only have ONE child control, so a Panel, which in turn can contain multiple child controls, is usually a good choice. Later in this tutorial, we will have a much closer look into the different types of panels that you can use, as they are very important in WPF.

Важни свойства на Window (прозореца)

The WPF Window class has a bunch of interesting attributes that you may set to control the look and behavior of your application window. Here's a short list of the most interesting ones:

Icon- Позволява да дефинирате иконите на прозореца, които обикновено се намират в горен ляв ъгъл, в ляво от името на прозореца.

ResizeMode- Това определя дали и как крайният потребител ще може да променя размерите на прозореца. По подразбиране е "CanResize", което допуска потребителска промяна на прозореца като всеки друг прозорец, или с използването на бутоните за максимизиране/минимизиране или с издърпване на някой от ъглите. "CanMinimize" разрешава само смаляване, но не и разширяване или промяна чрез издърпване до по-голям или по-малък размер. "NoResize" е с най-големи рестрикции, в него са премахнати бутоните за максимизиране и минимизиране и прозорецът не може да бъде преоразмерен с издърпване.

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 - Решава дали прозорецът трябва автоматично да се преоразмерява, за да пасне на съдържанието си. По подразбиране е Manual, което означава, че не се преоразмерява автоматично. Други опции са Width, Height и WidthAndHeight, всяка от тях ще настрои прозореца хоризонтално, вертикално или и двете.

Topmost- по подразбиране е false, но ако я зададете да бъде true, вашият прозорец ще бъде пред другите прозорци, освен ако не е минимизиран. Полезно е само в определени случаи.

WindowStartupLocation- Определя стартовата позиция на вашия прозорец. По подразбиране е Manual (ръчно), което означава, че прозорецът ще бъде позициониран първоначално според Top и Left свойствата на вашия прозорец. Други възможности са CenterOwner, което ще разположи прозореца в неговия родителски прозорец и CenterScreen, който ще го разположи в центъра на екрана.

WindowState - Отговаря за първоначалното състояние на прозореца. Може да бъдев или Normal, Maximized или Minimized. По подразбиране е Normal, която трябва да се използва, освен ако искате да използвате някое от другите две.

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