我有一个MVVM Light View模型,ListBox绑定到List<>。 Listbox最初填充得很好,但是当我在运行时更改为不同的列表(而不仅仅是添加项目)时,除非我设置了特定的数据上下文,否则它不会更新。
这样可行:
...
DataContext="{Binding MyViewModel, Source={StaticResource Locator}}"
<ListBox ItemsSource="{Binding MyList}"/>
但这不是:
DataContext="{Binding Source={StaticResource Locator}}"
<ListBox ItemsSource="{Binding MyViewModel.MyList}"/>
在这两种情况下,我都可以通过set调用来验证是否正确调用了RaisePropertyChanged方法,但在第二种情况下,相关的“get”永远不会发生。
这是否按设计运行,或者这是MVVM-Light或Silverlight中的错误?
定位器:
public class ViewModelLocator
{
private static UnityContainer Container;
static ViewModelLocator()
{
Container = new UnityContainer();
Container.RegisterType<MainViewModel>(new ContainerControlledLifetimeManager());
}
public MyViewModelType MyViewModel
{
get
{
return Container.Resolve<MyViewModelType>();
}
}