C# 绑定在没有特定DataContext的情况下不更新
我有一个MVVM轻型视图模型,其中一个列表框绑定到一个列表。Listbox最初填充得很好,但当我在运行时更改为其他列表(不仅仅是添加项)时,它不会得到更新,除非我设置了特定的数据上下文 所以这是可行的:C# 绑定在没有特定DataContext的情况下不更新,c#,silverlight,mvvm-light,C#,Silverlight,Mvvm Light,我有一个MVVM轻型视图模型,其中一个列表框绑定到一个列表。Listbox最初填充得很好,但当我在运行时更改为其他列表(不仅仅是添加项)时,它不会得到更新,除非我设置了特定的数据上下文 所以这是可行的: ... DataContext="{Binding MyViewModel, Source={StaticResource Locator}}" <ListBox ItemsSource="{Binding MyList}"/> 。。。 DataContext=“{Binding
...
DataContext="{Binding MyViewModel, Source={StaticResource Locator}}"
<ListBox ItemsSource="{Binding MyList}"/>
。。。
DataContext=“{Binding MyViewModel,Source={StaticResource Locator}}”
但这并不是:
DataContext="{Binding Source={StaticResource Locator}}"
<ListBox ItemsSource="{Binding MyViewModel.MyList}"/>
DataContext=“{Binding Source={StaticResource Locator}}”
在这两种情况下,我都可以单步执行set调用来验证RaisePropertyChanged方法是否被正确调用,但在第二种情况下,关联的“get”永远不会发生
这是按设计工作,还是MVVM Light或Silverlight中的一个bug
定位器:
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>();
}
}
公共类ViewModelLocator
{
私有静态UnityContainer容器;
静态ViewModelLocator()
{
容器=新的UnityContainer();
RegisterType(新的ContainerControlledLifetimeManager());
}
公共MyViewModelType MyViewModel
{
得到
{
返回Container.Resolve();
}
}
请发布定位器类和视图模型的代码片段。问题很可能存在。似乎是绑定/通知问题。MVVM Light IMHO与此无关。我已经复制了您的情况,两种绑定方案都可以正常工作。您也可以发布视图模型吗?您对单例的初始绑定看起来很正常到目前为止,问题可能出在绑定上,但我需要重新编程。