记住Xamarin Forms Mac OS的窗口位置



我知道XCode支持AutoSave来记住窗口位置。

当平台是macOS时,Xamarin Forms 5怎么样?

这是我的一些代码,如果它有帮助:

public class AppDelegate : FormsApplicationDelegate
{
NSWindow window;
public AppDelegate()
{
var style = NSWindowStyle.Closable | NSWindowStyle.Resizable | NSWindowStyle.Titled;
var rect = new CoreGraphics.CGRect(200, 1000, 1024, 768);
window = new NSWindow(rect, style, NSBackingStore.Buffered, false)
{
Title = "Elderly and Infirm Rota",
TitleVisibility = NSWindowTitleVisibility.Visible
};
InstallApplicationFiles();
}

更新在注释中我也提到了限制窗口的大小。我现在已经算出了那位(NSWindow.MinSize):

NSWindow window;
public AppDelegate()
{
var style = NSWindowStyle.Closable | NSWindowStyle.Resizable | NSWindowStyle.Titled;
var rect = new CoreGraphics.CGRect(200, 1000, 1024, 768);
window = new NSWindow(rect, style, NSBackingStore.Buffered, false)
{
Title = "Elderly and Infirm Rota",
TitleVisibility = NSWindowTitleVisibility.Visible,
MinSize = rect.Size
};
InstallApplicationFiles();
}

现在我必须解决窗口的大小/位置,并记住它。

事实证明这并不太难。Visual Studio for Mac缺少Xcode中描述的一些设置(我认为)。参见:frameAutoSaveName

这里提供的答案也很有用。对我来说,问题的一部分是有正确的术语来搜索答案,在这种情况下,NSWindow很重要。

在macOSAppDeletegate构造函数中,我现在这样做:

public AppDelegate()
{
var style = NSWindowStyle.Closable | NSWindowStyle.Resizable | NSWindowStyle.Titled;
var rect = new CoreGraphics.CGRect(200, 1000, 1024, 768);
window = new NSWindow(rect, style, NSBackingStore.Buffered, false)
{
Title = NSBundle.MainBundle.ObjectForInfoDictionary("CFBundleDisplayName").ToString(),
TitleVisibility = NSWindowTitleVisibility.Visible,
MinSize = rect.Size,
FrameAutosaveName = "xxxxx"
};
InstallApplicationFiles();
}
注意FrameAutosaveName属性的附加设置:
FrameAutosaveName = "xxxxx"

现在,当我关闭应用程序时,会记住窗口的位置。


请让我知道是否有一种方法可以直接在Visual Studio中设置Mac GUI。

最新更新