我试图在Xamarin.Mac(monomac)应用程序中找出正确的视图和子视图组合。
很少有使用Xamarin.Mac的Windows / Background View / Controls UI的例子和我发现的那些(基本上this project是最好的文档,当涉及到Window / View组合时)受到的影响同样的问题 - 它是表单窗口的静态绑定 - >背景视图(在XCode中绑定) - > View节点下的控件。在视图中显示为控件的内容不是通过C#动态添加的,甚至不是背景视图中的单独视图。
我需要的是创建一个Window,它具有半透明的背景视图,然后根据应用程序逻辑动态设置我的应用程序,从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
是NSViewController
,您在第一个代码段中看到的LeoBreakBackgroundView
只是一个没有控制器的NSView
。
无论如何,是否可以从Xamarin.Mac中的代码动态控制View的子视图?