在设计时数据不显示
问题描述:
我正在为Silverlight for WP7开发应用程序。我决定使用MVVM模式。我在类ViewModelLocator上找到ViewModels。更多实例在:在设计时数据不显示
public sealed class ViewModelLocator
{
private static ViewModelLocator _instance = null;
public static ViewModelLocator Instance
{
get
{
return _instance;
}
set
{
_instance = value;
}
}
public SomeViewModel SomeVM
{
get
{
........
}
}
........
}
DataContext的是通过结合到Instance.SomeVM调整,定位器是ViewModelLocator的一个实例。
DataContext="{Binding Instance.SomeVM, Source={StaticResource Locator}}"
我在设计时将DataContext绑定到Instance.LocationDetail时,在View中投影数据时出现问题。
当我做了微小的改变,然后我只将DataContext设置为SomeVM ..数据显示。
为什么设计时不显示数据,当我使用Binging的Instance.SomeVM?
在运行时一切正常。在这两种情况下。
答
什么时候初始化实例属性?
我假设你已经在你的应用程序的资源中添加了一个ViewModelLocator实例,它的关键字为'Locator',但即使如此,似乎属性实例仍然为空,因为它从来没有被分配过。
如果你这样做:
DataContext="{Binding Instance.SomeVM, Source={StaticResource Locator}}"
您尝试从属性实例得到SomeVM的价值。但是实例可能是空...
这应该工作:
DataContext="{Binding SomeVM, Source={StaticResource Locator}}"
如果你想有一个单例模式,你应该考虑你的初始化Instance属性:
private static ViewModelLocator _instance = null;
public static ViewModelLocator Instance
{
get
{
if(_instance == null)
_instance = new ViewModelLocator();
return _instance;
}
set
{
_instance = value;
}
}