记住 Xamarin Forms window 的位置 Mac OS
Remember window position with Xamarin Forms Mac OS
我了解到 XCode 支持自动保存以记住 window 位置。我看到它自由记录。
当平台是 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();
}
更新
在评论中我还提到了限制 window 的大小。我现在已经解决了这一点 (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();
}
现在我必须解决 window 大小/位置并记住它。
事实证明这并不难。 Mac 的 Visual Studio 缺少一些为 Xcode 描述的设置(我认为)。参见:frameAutoSaveName
提供的答案 here 也很有用。对我来说,部分问题是使用正确的术语来搜索答案,在这种情况下 NSWindow
很重要。
在我的 macOS AppDeletegate
构造函数中,我现在这样做:
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"
现在,当我关闭应用程序时,window 位置会被记住。
请让我知道是否可以直接在 Visual Studio 中为 Mac GUI 设置它。
我了解到 XCode 支持自动保存以记住 window 位置。我看到它自由记录。
当平台是 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();
}
更新
在评论中我还提到了限制 window 的大小。我现在已经解决了这一点 (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();
}
现在我必须解决 window 大小/位置并记住它。
事实证明这并不难。 Mac 的 Visual Studio 缺少一些为 Xcode 描述的设置(我认为)。参见:frameAutoSaveName
提供的答案 here 也很有用。对我来说,部分问题是使用正确的术语来搜索答案,在这种情况下 NSWindow
很重要。
在我的 macOS AppDeletegate
构造函数中,我现在这样做:
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"
现在,当我关闭应用程序时,window 位置会被记住。
请让我知道是否可以直接在 Visual Studio 中为 Mac GUI 设置它。