我該如何解決從控制器ViewModel的命令?從Controller解析ViewModel的命令? (PRISM)
現在,我不得不通過構造函數依賴注入UnityContainer到ViewModel中,並使用字符串解析ICommand。我真的不想將容器傳遞給我的視圖模型,並希望將其保存在我的控制器中。
這些只是片段,而不是全部。儘管我在嘗試學習,但並不是說他們是複雜的課程。
視圖模型
private ICommand loadedCommand;
public ICommand LoadedCommand
{
get { return loadedCommand; }
set
{
loadedCommand = value;
RaisePropertyChanged(() => this.LoadedCommand);
}
}
public MainViewModel(IUnityContainer container)
{
LoadedCommand = container.Resolve<ICommand>("LoadedCommand")
}
控制器
DelegateCommand LoadedCommand;
new DelegateCommand(() => ViewLoaded());
控制器
Container.RegisterInstance<ICommand>("LoadedCommand", LoadedCommand);
我甚至不知道我是否正在以正確的方式進行。我有點立刻潛入一切,Prism和Dependency Injection和mvvm(帶控制器)對我來說都是比較新的。
控制器是否擁有ViewModel的ICommand?我會認爲是的,因爲我被告知ViewModel不應該有任何邏輯。當每個ICommand不同時,如何將控制器的DelegateCommand注入到ViewModel中?我是否爲每個Command創建一個接口?理想情況下,我想在我的模塊中創建自己的類中的命令。 – Cowman 2012-08-08 00:25:09
我知道我可以像這樣將[Dependency]屬性添加到LoadedCommand屬性中。 [依賴(「LoadedCommand」)] 現在我可以擺脫ViewModel必須知道UnityContainer。 這是理想嗎?有沒有另一種方式我應該考慮這樣做? – Cowman 2012-08-08 02:30:51
我仍然在尋求這個問題的答案。最簡單的說,我想知道「如何在控制器中設置ViewModel ICommands中的代碼」的正確方法。 我看過很多HiTech Magic的帖子都在談論這個,但他並沒有真正討論去做這個。我不知道是否需要依賴注入,如果只需要通過直接在控制器中訪問屬性來設置。 我買了「依賴注入.NET」希望找到答案。 – Cowman 2012-08-12 06:27:17