0

由於Visual Studio 2015處於RC狀態,因此我不確定是否發現錯誤或者我的項目出現問題。在Visual Studio 2015中綁定到MVVMLight ViewModelLocator路徑時,DataContext爲null

我用MVVM Light創建了一個Viewmodel定位器,並公開了返回每個viewmodel實例的靜態屬性。定位器被註冊爲app.xaml中的靜態資源。

通常我會在頁面的XAML,像這樣的線路綁定這樣的:

DataContext="{Binding Path=MyViewModel, Source={StaticResource ViewModelLocator}}" 

不過,雖然我從來沒有與這個工作的問題VS2015嘗試它之前,它無法正常工作在我爲Windows 10創建的新項目中。

當我運行該項目時,即使在XAML中明確分配了DataContext,它仍然在頁面中爲null,就像我在其他幾十個項目中完成的那樣。我檢查並且ViewModelLocator靜態資源被創建,初始化,並且它的MyViewModel屬性也包含我想要的ViewModel。所以在VM或Locator中肯定沒有空引用,但由於某種原因,將XAML聲明綁定到頁面的DataContext似乎被忽略...

我在靜態屬性getter中設置了一個斷點對於定位器中的MyViewModel,它永遠不會被調用...

所以我不確定這是VS2015,MVVM Light,Windows 10 SDK或Windows 10本身(當前版本10162)的問題...

有其他人遇到過這個問題嗎?

+0

所以完全相同的代碼/項目,如果加載到一個較舊的VS和目標的工作,因爲它應該? – Noctis

+0

很好的問題,我忘了你可以在以前的版本上建立贏10,我會嘗試它並更新問題,謝謝 – SelAromDotNet

+0

聽起來像一個很好的起點:) – Noctis

回答

0

我發現了這個問題。在定位器中獲取單個視圖模型的屬性不應該是靜態的,事實上,看看我從未做過的其他項目。

這裏是我有什麼:

public static MyViewModelType MyViewmodel { get { return ServiceLocator.Current.GetInstance<MyViewModelType>(); } } 

我不知道我在想什麼(飲)使其靜態,這一次,但是從定位器屬性的get刪除該關鍵字立即解決了問題。

相關問題