我已將視圖的數據上下文設置爲View的代碼背後的相關ViewModel。但在閱讀a question on the MVVM pattern,後,建議將此膠水代碼移至視圖的XAML標記。如何將數據上下文重新連接到C#中的XAML?
谷歌搜索已經顯示出我XAML中設置下面的上下文的例子,by setting a namespace to the VM and setting data context.
雖然在我的情況下,MainViewModel需要CustomerRepository實例的參數,這我不知道如何成立XAML,基於前面的例子。
有誰知道如何將數據上下文移動到視圖的XAML?
這是我的當前設置視圖的代碼隱藏在C#:
public partial class MainView : Window
{
private MainViewModel ViewModel { get; set; }
public MainView()
{
InitializeComponent();
ViewModel = new MainViewModel(CustomerRepository.Instance);
this.DataContext = ViewModel;
}
}
沒關係很好的建議,打算使用創建第二個參數構造函數少,調用現有的方法。 我知道如何設置一個無參數ctor,但是我怎樣才能定義一個來自我的第二個ctor的呼叫?我見過使用base()的建議,但不知道如何實現。 我的VM設置了這樣的參考: https://github.com/BrianJVarley/MongoDB_App/blob/master/MongoDBApp/ViewModels/MainViewModel.cs –
你可以從一個新的像這樣的調用現有的構造:'public MainViewModel():this(new CustomerRepository())'。但是在第二次思考它之後,我認爲最好只是在不調用現有構造函數的情況下在新的無參數構造函數中創建存儲庫。因爲那樣你可以檢查你是否在設計時間。看到我編輯的回覆。 – Martin
很酷,你有沒有遇到過使用這個https://msdn.microsoft.com/en-us/library/system.windows.data.objectdataprovider.aspx?作爲一個解決方案,有一個超載ctor?我試着使用你的上面的建議,但我不能'新'我的回購實例,因爲它是靜態單例。 –