在设计时数据不显示

问题描述:

我正在为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;           
    } 
}