其他分享
首页 > 其他分享> > CommunityToolkit.Mvvm-IOC

CommunityToolkit.Mvvm-IOC

作者:互联网

CommunityToolkit.Mvvm未内置IOC,可以使用Microsoft.Extensions.DependencyInjection.

在App中注册ViewModel和其他服务

public partial class App : Application
{
    public App()
    {
        Services = ConfigureServices();
        this.InitializeComponent();
    }

    public new static App Current => (App)Application.Current;

    public IServiceProvider Services { get; }

    private IServiceProvider ConfigureServices()
    {
        var sc = new ServiceCollection();
        // 注册所有的ViewModel
        sc.AddSingleton(new ProductViewModel() { ModelName = "HP"});
        // 注册其他服务
       sc.AddSingleton<IService,ImplementationService>());
        return sc.BuildServiceProvider();
    }
}

在View中,获取ViewModel实例赋值给DataContext

/// <summary>
/// ProductView.xaml 的交互逻辑
/// </summary>
public partial class ProductView : Window
{
    public ProductView()
    {
        InitializeComponent();
        App.Current.Services.GetService<ProductViewModel>()!.ModelName = "DELL";
        this.DataContext = App.Current.Services.GetService<ProductViewModel>();
    }
}

标签:CommunityToolkit,Mvvm,App,ViewModel,Current,sc,Services,IOC,public
来源: https://www.cnblogs.com/LiuwayLi/p/16586922.html