我有一個奇怪的&令人沮喪的問題在我的一些類之間傳遞一個對象。這源於我是一名編劇,而不是一名程序員,而且我只是笨手笨腳的。所以我敢肯定,我正在做一些愚蠢的事:)將數據傳遞給構造函數
我想建立一個嚮導對話框有多個頁面。我使用CodeProject的「國際化WPF嚮導」教程作爲起點,並嘗試將其適用於我的域。我陷入困境,因爲我的嚮導頁似乎無法引用模型。
我也做了以下內容:
- 創造了我的模型類(姑且稱之爲邁德特)
- 創建一個基類爲我的視圖模型(ViewModelBase)
- 創建的視圖模型類爲我的每個頁面,從ViewModelBase繼承(例如下面的例子是WelcomePageViewModel)
- 創建一個'控制器'風格的視圖模型驅動向導。 (WizardController)
當嚮導啓動時,WizardController被實例化。 WizardController也實例化MyData.Then,WizardController實例化其餘頁面的每個視圖模型。
實際的GUI似乎工作正常,我可以看到每個頁面的視圖模型正在正確加載。下面是一些代碼:
public class MyData
{
private string _someString;
public MyData(string someString)
{
_someString = someString;
}
}
public abstract class ViewModelBase : INotifyPropertyChanged
{
bool _isCurrentPage;
readonly MyData _myData;
public ViewModelBase(MyData myData)
{
_myData = myData;
}
}
public class WizardController : INotifyPropertyChanged
{
MyData _myData;
public WizardController()
{
_myData = new MyData("The Widgets");
}
}
public class WelcomePageViewModel : ViewModelBase
{
private MyData _myData;
public WelcomePageViewModel(MyData myData)
: base(myData)
{
_myData = myData;
// accessing _myData fails :(
MyLogger.WriteLine("Grabbed an instance of myData: " + _myData.ToString());
}
}
然而,當我嘗試從WelcomePageViewModel訪問myData的我的代碼失敗。在WelcomePageViewModel的MyLogger行中,拋出錯誤「對象引用未設置爲對象的實例」。
基本上,我試圖實現的是WizardController設置MyData,並且每個嚮導頁都可以訪問(並操縱)它。所以任何指導將不勝感激!
如果是訪問代碼'WelcomePageViewModel'對象? 「WelcomePageViewModel」存儲在哪裏? –
如果你在抽象類中聲明它,爲什麼然後在實際實現的類中重新聲明它?另外,如果你想在繼承類中訪問它,你會希望它被保護而不是私人的。如果您需要覆蓋它,請使用虛擬和覆蓋關鍵字。 –