小编Olo*_*lof的帖子

仅对"源列表"中的某些项目进行上下文菜单

我有一个带有源列表(NSOutlineView)的窗口.我的源列表只有两个级别.第一级是标题,第二级是数据.我想在一些数据单元格上有一个上下文菜单.不是全部.

首先,我尝试在表格单元格视图上附加一个表示数据单元格的菜单 - >没有任何反应.

其次,我在IB中的大纲视图上附加一个菜单 - >在每个单元格(标题和数据)上打开上下文菜单.我搜索停止打开菜单,但我找不到任何东西.

你有什么想法吗?

谢谢

OS X 10.8.2 Lion,Xcode 4.5.2,SDK 10.8

cocoa contextmenu objective-c nsmenu nsoutlineview

6
推荐指数
1
解决办法
1315
查看次数

与需要参数的工厂方法统一

我想用需要参数的工厂方法在Unity容器中注册一个类型。这些参数应统一解决,但只能在运行时解决。

工厂方法代码:

public static IApp Create(IOne, ITwo) {...}
Run Code Online (Sandbox Code Playgroud)

注册代码:

container.RegisterType(typeof(IApp), new InjectionFactory(f => App.Create(???, ???)));
Run Code Online (Sandbox Code Playgroud)

我需要什么来替换“ ???” ?

更多信息:

我的Unity配置分为两个阶段。第一阶段(应用程序正在启动),我注册了除一个对象之外的所有对象:

container.RegisterType<IOne, One>();
container.RegisterType<ITwo, Two>();
container.RegisterType<IApp, App>();
// ...
Run Code Online (Sandbox Code Playgroud)

第二阶段(用户登录),我中庸之道注册谁在我所有的类的构造函数中使用的上下文对象的实例(OneTwoApp,...):

var childContainer = container.CreateChildContainer();
childContainer.RegisterInstance<AppEnvironment>(new AppEnvironment(userName));
Run Code Online (Sandbox Code Playgroud)

这是我的代码,不使用InjectionFactory。工作正常。现在,我必须多次注册IApp接口,并每次都调用一个不同的静态方法。静态方法示例:

public static IApp Create(IOne one, ITwo two, AppEnvironment env) 
{
    _one = one;
    _two = two;
    _env = env;
}
Run Code Online (Sandbox Code Playgroud)

如果我向IApp注册此代码:

container.Register(typeof(IApp), new InjectionFactory(f => App.Create(container.Resolve<IOne>(), container.Resolve<ITwo>(), container.Resolve<AppEnvironment>()));
Run Code Online (Sandbox Code Playgroud)

然后没有设置我的env变量。

但是,如果我注册了我的env实例(仅出于测试目的,我不能这样做),它就可以工作。

c# factory unity-container

6
推荐指数
1
解决办法
2790
查看次数