Window resize/fullscreen event xamarin.mac

PJ 96 Reputation points


I'm building an application and I'd like to change some constraints on my storyboard when the user enters full screen. I'm thinking there should be some event I can subscribe to.

Here's the class for my main window. You can see I've override-ed the WillEnterFullScreen function, although the code isn't working (the console.writeline is never printed & breakpoint is never reached)

public partial class MainWindow : NSWindow

        //in your window class 
        public new WindowDelegate Delegate
            get { return (WindowDelegate)(NSWindowDelegate)base.Delegate; }
            set { base.Delegate = value; }

        public MainWindow (IntPtr handle) : base (handle)

    public class WindowDelegate : NSWindowDelegate
        public event EventHandler Closing;

        public override void DidEndLiveResize(NSNotification notification)
            Console.WriteLine("I am Resized");

        public override void WillEnterFullScreen(NSNotification notification)


I've been trying something like this too:

MainWindow.WillEnterFullScreenNotification += () => { ... }

and this

NSApplication.WindowResizedNotification += ... 

but I'm just getting errors.

I've had a look through the forums but haven't had much luck. Any help or advice would be much appreciated.

Thanks for your time.

A Microsoft open-source app platform for building Android and iOS apps with .NET and C#.
4,918 questions
No comments
{count} votes

Accepted answer
  1. PJ 96 Reputation points

    I worked it out. Here's the answer for anyone looking:

    Step 1. Create two NSObjects in your viewcontroller class:

            NSObject NSWindowDidEnterFullScreenNotification;
            NSObject NSWindowDidExitFullScreenNotification;

    Step 2. In your ViewDidLoad() method add this:

                NSWindowDidEnterFullScreenNotification = NSNotificationCenter.DefaultCenter.AddObserver(new NSString("NSWindowDidEnterFullScreenNotification"), FullScreenObserver, null);
                NSWindowDidExitFullScreenNotification = NSNotificationCenter.DefaultCenter.AddObserver(new NSString("NSWindowDidExitFullScreenNotification"), ExitFullScreenObserver, null);

    Step 3. Then in your ViewController class add these two methods:

            public void ExitFullScreenObserver(NSNotification notify)
             //... your code here 
                Console.WriteLine("full screen mode exited");
            public void FullScreenObserver(NSNotification notify)
             //... your code here 
                Console.WriteLine("full screen mode entered");

    NB: this doesn't dispose of the NSObjects - for more info see User SushiHangover's Answer on StackOverflow: how-to-detect-resize-in-nsview-in-xamarin-mac

0 additional answers

Sort by: Newest