2012-01-11 47 views
2

我正在爲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?

在運行時一切正常。在這兩種情況下。

回答

1

什麼時候初始化實例屬性?

我假設你已經在你的應用程序的資源中添加了一個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;           
    } 
}