我试图找出 Xamarin.Mac (monomac) 应用程序中视图和子视图的正确组合。
很少有带有 Xamarin.Mac 的 Windows/Background View/Controls UI 的示例,而我发现的那些(基本上这个项目是关于 Window/View 组合的最佳文档)遇到同样的问题 - 它是一个窗体的静态绑定窗口 -> 背景视图(在 XCode 中绑定) -> View 节点下的控件。在视图上显示为控件的内容不是通过 C# 动态添加的,甚至不是背景视图中的单独视图。
我需要的是创建一个窗口,它有一个半透明的背景视图,然后根据应用程序逻辑动态地让我的应用程序从 C# 代码向背景视图注入不同的子视图。我知道可以将子视图添加到 Xamarin.Mac 中的视图,但是当我在我的情况下尝试它时,子视图没有显示:
GoFullscreen 是窗口开始转换的地方:
private void GoFullScreen ()
{
// Set the window level to be above the menu bar
Window.Level = NSWindowLevel.Normal;
var backgroundView = new LeoBreakBackgroundView ();
backgroundView.SetBreakSubview (_currentBreakViewController);
Window.ContentView = backgroundView;
Window.ContentView.EnterFullscreenModeWithOptions (NSScreen.MainScreen, new NSDictionary());
// Show the window
Window.MakeKeyAndOrderFront (this);
}
在我打电话的时候backgroundView.SetBreakSubview (_currentBreakViewController);
这是:
_currentBreakViewController = currentBreakController;
this.AddSubview (_currentBreakViewController.View);
我没有看到 _currentBreakViewController.View 被添加到 backgroundView,但 backgroundView 确实被添加到全屏窗口中。
_currentBreakViewController
是 a NSViewController
,LeoBreakBackgroundView
你在第一个片段中看到的只是一个NSView
没有控制器的。
无论如何,是否可以从 Xamarin.Mac 中的代码动态控制视图的子视图?