添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • DevExpress Universal Subscription
  • DevExpress WinForms Subscription
  • DevExpress VCL Controls
  • DevExtreme跨平台开发框架
  • .NET开发框架eXpressApp Framework(XAF)
  • DevExpress学院
  • 中文文档库
  • MyDataService dataService; public UserViewModel() { this.dataService = new MyDataService(); 类紧密相连,每次使用 UserViewModel 时,它都会隐式创建 MyDataService 的一个实例。 如果以后修改 MyDataService 的初始化方式,则必须修改 MyDataService 初始化的所有视图模型。 您不能专门为 UserViewModel 类创建单元测试,因为它依赖于 MyDataService。 如果测试失败,您可能无法确定错误是在 UserViewModel 中还是在 MyDataService 中。 MyDataService dataService; public UserViewModel(MyDataService dataService) { this.dataService = dataService; IDataService dataService; public MainViewModel(IDataService dataService) { this.dataService = dataService;
    protected override void OnStartup(StartupEventArgs e) {
    base.OnStartup(e);
    var builder = new ContainerBuilder();
    //allow the Autofac container resolve unknown types
    builder.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource());
    //register the MyDataService class as the IDataService interface in the DI container
    builder.RegisterType<MyDataService>().As<IDataService>().SingleInstance();
    IContainer container = builder.Build();
    //get a MainViewModel instance
    MainViewModel mainViewModel = container.Resolve<MainViewModel>();
    
    public MainView() {
    InitializeComponent();
    this.DataContext = container.Resolve<MainViewModel>();
    
    public class DISource : MarkupExtension
    public static Func<Type, object> Resolver { get; set; }
    public Type Type { get; set; }
    public override object ProvideValue(IServiceProvider serviceProvider) => Resolver?.Invoke(Type);
    
    <UserControl DataContext="{local:DISource Type=local:MainViewModel}">
    public partial class App : Application
    protected override void OnStartup(StartupEventArgs e) {
    base.OnStartup(e);
    //...
    IContainer container = builder.Build();
    DISource.Resolver = (type) => {
    return container.Resolve(type);
    public INavigationService NavigationService { get; }
    public MainViewModel(INavigationService navigationService) =>
    NavigationService = navigationService;
    
    <dxwui:NavigationFrame>
    <dxmvvm:Interaction.Behaviors>
    <common:AttachServiceBehavior Service="{Binding NavigationService}"/>
    </dxmvvm:Interaction.Behaviors>
    </dxwui:NavigationFrame>
    AttachServiceBehavior 是一个简单的附加操作,它在服务属性更改时调用 NavigationFrameService.Attach。 虽然 AttachServiceBehavior 不包含在我们的库中,但您可以在此处获取其代码:How to use our Services with Dependency Injection/AttachServiceBehavior。即使 MainViewModel 使用 NavigationFrameService,它也不必实现 ISupportServices 接口。 此外,导航中涉及的所有子视图都可以在不附加到 NavigationFrame 的情况下使用该服务——因为它已经在主视图级别进行了配置。 本站文章除注明转载外,均为本站原创或翻译
    欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
    转载请注明:文章转载自:DevExpress控件中文网 [https://www.devexpresscn.com/]
    本文地址:https://www.devexpresscn.com/post/3082.html

    相关产品: DevExpress Universal Subscription,