2016-01-20 4 views
4

Как отключить NSMenuItem? Я пытаюсь отключить NSMenuItem после его нажатия. Щелчок обрабатывается правильно действием (Выход).Отключить NSMenuItem, подключенный к розетке с Xamarin.Mac

Я попытался изменить Enabled свойство ложно следующими двумя способами:

partial void Logout (AppKit.NSMenuItem sender) 
{ 
    sender.Enabled = false; 
} 

и

partial void Logout (AppKit.NSMenuItem sender) 
{ 
    LogoutItemOutlet.Enabled = false; 
} 

Но каждый раз, когда это действие называется, то Enabled поля продолжать быть true. Сам элемент меню также никогда не отключается.

Как отключить NSMenuItem после того, как действие выполнено?

+0

Возможно перерисовки/освежающий после отключения бы помочь? – Gabe

ответ

4

Попробуйте установить пункт меню Action в null:

partial void Logout (AppKit.NSMenuItem sender) 
{ 
    LogoutItemOutlet.Action = null; 

    // I don't think you need the following but it won't hurt 
    LogoutItemOutlet.Enabled = false; 
} 
+0

Спасибо, это работает. Я снова включаю прикладом с 'ObjCRuntime.Selector (" NameOfAction: ")'. Вы знаете, действительно ли это правильно? – Waaghals

+0

Я не уверен, что это правильный способ или нет, но альтернативным способом может быть подписка/отмена подписки на активированное событие: Чтобы отключить 'LogoutItemOutlet.Activated - = LogoutActivatedHandler;' и включить 'LogoutItemOutlet.Activated + = LogoutActivatedHandler ; ' – ashokgelal

0

NSMenuItemEnabled свойство не имеет никакого эффекта, если только NSMenu, в котором элемент будет добавлен или уже часть имеет AutoEnablesItems набор для true (это false по умолчанию). Это свойство может быть установлено программно или в Interface Builder.

+0

Настройка в Interface Builder уже включена, также при отладке свойства «Menu» моего NSStatusItem уже установлено значение true. – Waaghals

Смежные вопросы