使用Xamarin.Mac禁用与插座耦合的NSMenuItem

时间:2016-01-20 15:11:29

标签: c# cocoa xamarin xamarin.mac

如何禁用NSMenuItem? 我点击后尝试禁用NSMenuItem。 操作(注销)正确处理了单击。

我尝试通过以下两种方式将Enabled属性更改为false:

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

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

但每次调用此操作时,Enabled字段都会true。菜单项本身也从未实际禁用。

如何在执行某个操作后禁用NSMenuItem?

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

NSMenuItem Enabled属性无效,除非将NSMenu项添加到AutoEnablesItemstrue已设置为false (默认为class Y { ... }; /* ================================================== */ class A { public: A(ACfg* cfg); }; class ACfg { ... }; /* ================================================== */ class B: virtual public A { public: B(ACfg* cfg): A(cfg) {} }; /* ================================================== */ class C: virtual public A { public: C(ACfg* cfg): A(cfg) {} }; /* ================================================== */ template<typename T> class D<T>: public B { public: D(ACfg* cfg); private: T member; }; template<typename T> D<T>::D(ACfg* cfg): B(cfg) {} /* ================================================== */ class E: public C, public D<Y> { E(ACfg* cfg): C(cfg), D<Y>(cfg) {} ^ }; /* ================================================== */ class F: public E { F(ACfg* cfg): E(cfg) {} ^ }; )。可以通过编程方式或在Interface Builder中设置此属性。