Avalonia框架中窗口的状态管理主要通过Window类的WindowState属性实现,该属性可以设置窗口处于正常、最大化、最小化三种状态,同时框架也提供了对应的交互逻辑支持,开发者可以根据业务需求灵活控制窗口状态。

Avalonia窗口状态核心属性
Avalonia的Window类提供了WindowState属性,该属性的类型是WindowState枚举,包含三个常用取值:
- Normal:窗口处于正常大小状态,可自由调整尺寸
- Maximized:窗口处于最大化状态,铺满当前屏幕工作区
- Minimized:窗口处于最小化状态,缩放到任务栏或系统托盘
修改WindowState属性的值,就可以直接切换窗口的状态,这是实现窗口最大化最小化的核心方式。
通过代码实现窗口状态切换
我们可以在按钮点击事件、菜单选择事件等场景中,通过修改WindowState属性来控制窗口状态,以下是完整的C#代码示例:
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace AvaloniaWindowStateDemo
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
// 绑定按钮点击事件
var maximizeBtn = this.FindControl<Button>("MaximizeBtn");
var minimizeBtn = this.FindControl<Button>("MinimizeBtn");
var restoreBtn = this.FindControl<Button>("RestoreBtn");
maximizeBtn.Click += (sender, e) =>
{
// 设置窗口为最大化状态
this.WindowState = WindowState.Maximized;
};
minimizeBtn.Click += (sender, e) =>
{
// 设置窗口为最小化状态
this.WindowState = WindowState.Minimized;
};
restoreBtn.Click += (sender, e) =>
{
// 设置窗口为正常状态
this.WindowState = WindowState.Normal;
};
}
}
}
对应的AXAML界面代码如下,包含三个控制按钮:
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:AvaloniaWindowStateDemo"
Title="Avalonia窗口状态管理" Height="300" Width="400">
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center" Spacing="10">
<Button x:Name="MaximizeBtn" Content="最大化窗口" Width="120" Height="30"/>
<Button x:Name="MinimizeBtn" Content="最小化窗口" Width="120" Height="30"/>
<Button x:Name="RestoreBtn" Content="还原窗口" Width="120" Height="30"/>
</StackPanel>
</Window>
监听窗口状态变化
如果需要在窗口状态改变时执行自定义逻辑,可以监听Window的PropertyChanged事件,判断WindowState属性的变化:
public MainWindow()
{
InitializeComponent();
// 监听窗口属性变化
this.PropertyChanged += (sender, e) =>
{
if (e.Property == WindowStateProperty)
{
var currentState = this.WindowState;
// 根据当前状态执行对应逻辑
if (currentState == WindowState.Maximized)
{
System.Console.WriteLine("窗口已最大化");
}
else if (currentState == WindowState.Minimized)
{
System.Console.WriteLine("窗口已最小化");
}
else if (currentState == WindowState.Normal)
{
System.Console.WriteLine("窗口已还原为正常状态");
}
}
};
}
注意事项
- 窗口最大化后,
Width和Height属性不会自动更新,获取窗口实际尺寸需要使用Bounds属性 - 部分Linux桌面环境下,窗口最小化的表现可能和系统设置有关,若需要自定义最小化逻辑可以结合系统托盘功能实现
- 设置
WindowState为Minimized后,窗口会触发Deactivated事件,还原时会触发Activated事件,可以结合这两个事件处理业务需求
Avalonia窗口最大化窗口最小化窗口状态管理WindowState修改时间:2026-07-02 02:12:25