WPF+Unity:使用服务的用户控件?

WPF+Unity: UserControl with usage of services?

我有一个 UserControl,基本上是这样的:

你猜对了,目标是让用户在点击Browse时选择一个file/folder,然后在TextBox.

中显示文件路径

我开始了我的第一个完全 MVVM 应用程序(使用 Prism+Unity),实际上我有一个 IDialogService,它允许我显示 MessageBox,但也显示一些 OpenFileDialogSaveFileDialog.

我想使用为此 IDialogService 提供的实现,以便在执行浏览命令后向用户显示我的对话框。

由于 UserControl 不是用 Unity 构建的,如何请求实现?

如果我没理解错的话,您的 UserControl 需要以某种方式获取您正在使用的 Unity 容器。如果您自己实例化 UserControl ,您可以考虑将其添加为构造函数参数;如果它是由框架实例化的,您可以考虑使用 Container 属性 或 setter 方法。或者您可以将容器作为单例使用。

无论如何,假设您的 UserControl 有一个这样的字段...

IUnityContainer container;

...并且您已设法将其指向您正在使用的容器,您应该能够以正常方式解析您的服务:

IDialogService service = container.Resolve<IDialogService>();
service.OpenFileDialog(...);