解决WPF XAML编译报“Value cannot be null. (Parameter ‘provider’)”问题
问题描述
在wpf使用时,经常会出现控件不能显示的问题,如下图所示
错误列表中显示“XDG0003 Value cannot be null. (Parameter ‘provider’)"
后台代码如下:
public partial class MainView : UserControl
{
public MainView ()
{
InitializeComponent();
DataContext =ServiceProvider.GetRequiredService<MainViewModel>();
}
}
经过多次验证发现,如果删除 DataContext = new MainViewModel();就没有问题。
但是因为代码开发需求,无法避免不这样写。
public MainView ()
{
InitializeComponent();
//DataContext =ServiceProvider.GetRequiredService<MainViewModel>();
}
解决方案
如果您在设计时通过 DI 注入参数或进行远程调用等,就会出现此问题。
解决方法如下
public MainView ()
{
InitializeComponent();
if(DesignerProperties.GetIsInDesignMode(this)) return;
DataContext =ServiceProvider.GetRequiredService<MainViewModel>();
}
这样就大功告成了!!!!!!!!!!1