Window

Window is a top-level ContentControl.

You will not usually create instances of the Window class directly; instead the Window class is usually sub-classed for each type of window to be shown by an application. For information on how to create new window classes from templates see the quickstart.

Common Properties

Property Description
Title The window title
Icon The window icon
SizeToContent Describes the window's auto-sizing behavior
WindowState The minimized/maximized state of the window

Source code

Window.cs

The main window

The main window is the window passed to Application.Run in the AppMain method of your your Program.cs file:

private static void AppMain(Application app, string[] args)
{
    app.Run(new MainWindow());
}

It can be retrieved at any time using the Application.Current.MainWindow property.

Show, hide and close a window

You can show a window using the Show method:

var window = new MyWindow();
window.Show();

Windows can be closed using the Close method. This has the same effect as when a user clicks the window's close button:

window.Close();

// A closed window cannot be shown.
window.Show();

Note that once a window has been closed, it cannot be shown again. If you want to re-show the window then you should use the Hide method:

window.Hide();

// Window can now be shown again later
window.Show();

See also Prevent a window from closing

Show a window as a dialog

You can show a window as a modal dialog by calling the ShowDialog method. ShowDialog requires an owner window to be passed:

var window = new MyWindow();
window.ShowDialog(Application.Current.MainWindow);

The ShowDialog method will return immediately. If you want to wait for the dialog to be closed, you can await the call:

var window = new MyWindow();
await window.ShowDialog(Application.Current.MainWindow);

Dialogs can return a result by calling the Close method with an object. This result can then be read by the caller of ShowDialog. For example:

public class MyDialog : Window
{
    public MyDialog()
    {
        AvaloniaXamlLoader.Load(this);
    }

    private void OkButton_Click(object sender, EventArgs e)
    {
        Close("OK Clicked!");
    }
}
var dialog = new MyDialog();

// The result is a string so call `ShowDialog<string>`.
var result = await dialog.ShowDialog<string>(Application.Current.MainWindow);

Prevent a window from closing

A window can be prevented from closing by handling the Closing event and setting e.Cancel = true:

window.Closing += (s, e) =>
{
    e.Cancel = true;
};

You could also hide the window instead. This allows the window to be re-shown after the user clicks the close button:

window.Closing += (s, e) =>
{
    ((Window)s).Hide();
    e.Cancel = true;
};