1

我试图找出 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 NSViewControllerLeoBreakBackgroundView你在第一个片段中看到的只是一个NSView没有控制器的。

无论如何,是否可以从 Xamarin.Mac 中的代码动态控制视图的子视图?

4

0 回答 0