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.
Title
The window title
Icon
The window icon
SizeToContent
Describes the window's auto-sizing behavior
WindowState
The minimized/maximized state of the window
The main window is the window passed to ApplicationLifetime.MainWindow
in the OnFrameworkInitializationCompleted
method of your your App.axaml.cs
file:
public override void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktopLifetime)
{
desktopLifetime.MainWindow = new MainWindow();
}
It can be retrieved at any time by casting Application.ApplicationLifetime
IClassicDesktopStyleApplicationLifetime.
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
You can show a window as a modal dialog by calling the ShowDialog
method. ShowDialog
requires an owner window to be passed:
// Here we assume this code is executed from our current Window class and "this" object is a Window.
// Alternatively you can get global MainWindow from Application.ApplicationLifetime casted to IClassicDesktopStyleApplicationLifetime.
var ownerWindow = this;
var window = new MyWindow();
window.ShowDialog(ownerWindow);
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(ownerWindow);
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()
{
InitializeComponent();
}
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>(ownerWindow);
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;
};