标签:CommunityToolkit Mvvm App ViewModel Current sc Services IOC public
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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。