WPF+Unity:使用服务的用户控件?
WPF+Unity: UserControl with usage of services?
我有一个 UserControl
,基本上是这样的:
你猜对了,目标是让用户在点击Browse
时选择一个file/folder,然后在TextBox
.
中显示文件路径
我开始了我的第一个完全 MVVM 应用程序(使用 Prism+Unity),实际上我有一个 IDialogService
,它允许我显示 MessageBox
,但也显示一些 OpenFileDialog
和 SaveFileDialog
.
我想使用为此 IDialogService
提供的实现,以便在执行浏览命令后向用户显示我的对话框。
由于 UserControl
不是用 Unity 构建的,如何请求实现?
如果我没理解错的话,您的 UserControl
需要以某种方式获取您正在使用的 Unity 容器。如果您自己实例化 UserControl
,您可以考虑将其添加为构造函数参数;如果它是由框架实例化的,您可以考虑使用 Container
属性 或 setter 方法。或者您可以将容器作为单例使用。
无论如何,假设您的 UserControl
有一个这样的字段...
IUnityContainer container;
...并且您已设法将其指向您正在使用的容器,您应该能够以正常方式解析您的服务:
IDialogService service = container.Resolve<IDialogService>();
service.OpenFileDialog(...);
我有一个 UserControl
,基本上是这样的:
你猜对了,目标是让用户在点击Browse
时选择一个file/folder,然后在TextBox
.
我开始了我的第一个完全 MVVM 应用程序(使用 Prism+Unity),实际上我有一个 IDialogService
,它允许我显示 MessageBox
,但也显示一些 OpenFileDialog
和 SaveFileDialog
.
我想使用为此 IDialogService
提供的实现,以便在执行浏览命令后向用户显示我的对话框。
由于 UserControl
不是用 Unity 构建的,如何请求实现?
如果我没理解错的话,您的 UserControl
需要以某种方式获取您正在使用的 Unity 容器。如果您自己实例化 UserControl
,您可以考虑将其添加为构造函数参数;如果它是由框架实例化的,您可以考虑使用 Container
属性 或 setter 方法。或者您可以将容器作为单例使用。
无论如何,假设您的 UserControl
有一个这样的字段...
IUnityContainer container;
...并且您已设法将其指向您正在使用的容器,您应该能够以正常方式解析您的服务:
IDialogService service = container.Resolve<IDialogService>();
service.OpenFileDialog(...);