我正在嘗試學習 MVVMLight 并且我一直在創(chuàng)建用于編輯對象的新視圖。我有與客戶CustomersView一起CustomersViewModel顯示數(shù)據(jù)網(wǎng)格。雙擊 DataGridRow,我打開一個CustomerView實現(xiàn) aCustomerViewModel來編輯客戶的代碼,我在以下代碼中使用CustomersViewModel: var cv=new CustomerView(); var cvm=new CustomerViewModel(); cvm.IsEdit = true; cvm.Customer = customer; cv.DataContext = cvm; cv.ShowDialog();這是一個糟糕的方法嗎?創(chuàng)建視圖、使用一些參數(shù)實例化視圖模型的最佳方法是什么?
1 回答

Smart貓小萌
TA貢獻1911條經(jīng)驗 獲得超7個贊
Ba 知道,如果您在 viewModel 中實例化一個視圖對象,例如 CustomerView,您將打破 mvvm 模式。如果您的項目會增長,那應該是一個問題。
如果你絕對想保持 mvvm 模式,你有兩個選擇:
1)創(chuàng)建一個界面
interface INavigationService
{
NavigateTo(string viewName ,objet params);
}
創(chuàng)建此類的單例實現(xiàn)。將創(chuàng)建新 CustomerView() 和其他視圖的邏輯放在此方法中。主要目標是將視圖與其他任何東西分開。嘗試使用注入在您的視圖模型中只包含 INavigationService 引用。
2)使用像Prism這樣的mvvm很重的框架;
- 1 回答
- 0 關注
- 245 瀏覽
添加回答
舉報
0/150
提交
取消