我对使用 C# 和 AvaloniaUI 开发程序完全陌生。我想编写一个聊天应用程序,该应用程序应在右下角以小格式启动,但没有仅为“CenterOwner”和“CenterScreen”预定义“WindowStartupLocation”。我还查看了 AvaloniaUI 文档,但并没有真正找到有用的东西。
请记住,Avalonia 是跨平台的,并且兼容 iOS/Android。后者不支持Windows的概念。因此,在处理纯粹的桌面概念时,您必须访问 ApplicationLifetime。
工作区域为您提供屏幕尺寸减去操作系统组件(即开始菜单)。从那里,您必须将其转换为 PixelSize,然后进行通常的位置计算。请注意,作为示例,我在 Window OnLoaded 事件中执行了此操作。您也可以在外部执行此操作,但不要将其放入 MainWindow 构造函数中,因为在您尝试引用它时它不存在。
private void OnLoaded(object? sender, EventArgs args)
{
if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
var screenSize = desktop.MainWindow.Screens.Primary.WorkingArea.Size;
var windowSize = PixelSize.FromSize(ClientSize, desktop.MainWindow.Screens.Primary.Scaling);
Position = new PixelPoint(screenSize.Width - windowSize.Width, screenSize.Height - windowSize.Height);
}
}