internal void Update(AvaloniaNativeMenuExporter exporter, IAvaloniaNativeFactory factory, NativeMenuItem item) { if (item != ManagedMenuItem) { throw new ArgumentException("The item does not match the menuitem being updated.", nameof(item)); } if (item.Menu != null) { if (_subMenu == null) { _subMenu = __MicroComIAvnMenuProxy.Create(factory); if (item.Menu.GetValue(MacOSNativeMenuCommands.IsServicesSubmenuProperty)) { factory.SetServicesMenu(_subMenu); } _subMenu.Initialize(exporter, item.Menu, item.Header); SetSubMenu(_subMenu); } _subMenu.Update(factory, item.Menu); } if (item.Menu == null && _subMenu != null) { _subMenu.Deinitialise(); _subMenu.Dispose(); SetSubMenu(null); } }