我正在使用 async/await 来加载 UserControl 的数据。UserControl 通过主窗口接收数据。下面是我的 MainWindow.xaml.cs 文件:
public partial class MainWindow : Window
{
private MainViewModel _viewModel;
public MainWindow(MainViewModel viewModel)
{
InitializeComponent();
_viewModel = viewModel;
Loaded += MainWindow_Loaded;
DataContext = _viewModel;
}
private async void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
await _viewModel.LoadAsync();
}
}
我正在 App.xaml.cs 中初始化主窗口,如下所示:
var bootstraper = new Bootstrapper();
var container = bootstraper.Bootstrap();
var mainWindow = container.Resolve<MainWindow>();
mainWindow.Show();
我正在使用 Autofac,我的 Bootstrapper 类看起来像:
public class Bootstrapper
{
public IContainer Bootstrap()
{
var builder = new ContainerBuilder();
builder.RegisterType<MainWindow>().AsSelf();
builder.RegisterType<MainViewModel>().AsSelf();
builder.RegisterType<NavigationViewModel>().As<INavigationViewModel>();
builder.RegisterType<LookupDataService>().AsImplementedInterfaces();
builder.RegisterType<FriendDataService>().As<IFriendDataService>();
builder.RegisterType<FriendOrganizerDbContext>().AsSelf();
return builder.Build();
}
}
在 MainWindow.xaml 中绑定到 UserControl:
<view:NavigationView DataContext="{Binding NavigationViewModel}" />
导航视图模型:
<Grid>
<ListView ItemsSource="{Binding Friends}"
DisplayMemberPath="DisplayMember">
</ListView>
</Grid>
当我在代码中放置断点时,我能够从 Db 获取数据并看到我正在绑定的属性正在填充所需的数据,但我在 UI 中什么也看不到。
我知道DataContext = _viewModel;甚至在 _viewModel 填充所需信息之前就已执行。但我想知道如何克服这个问题。将 DataContext 设置为 async/await 调用返回的内容的正确方法是什么。
哦,我正在关注 Pluralsight 的使用 WPF、MVVM 和实体框架代码构建企业应用程序。
提前致谢。