2017-09-05 103 views
0

我正在嘗試遵循MVVM的最佳實踐(據我瞭解)。我在我的主項目中使用了Views,在另一個ViewModels中使用瞭解決方案。我的主項目中有一個靜態類,它根據命令行參數(例如,/ env = Production或/ env = Development)爲當前環境返回一個連接字符串。將連接字符串傳遞給ViewModel構造函數

我想通過XAML將連接字符串注入ViewModel。下面的作品,但它需要我硬編碼在XAML連接字符串:

<Window.DataContext> 
    <ObjectDataProvider xmlns:sys="clr-namespace:System;assembly=mscorlib" ObjectType="vm:SchedulerViewModel"> 
     <ObjectDataProvider.ConstructorParameters> 
      <sys:String>Data Source =.; Initial Catalog = MyDb_Dev; Integrated Security = true;</sys:String> 
     </ObjectDataProvider.ConstructorParameters> 
    </ObjectDataProvider> 
</Window.DataContext> 

有沒有辦法在我的靜態類的公共屬性的調用來代替硬編碼字符串Data Source =.; Initial Catalog = MyDb_Dev; Integrated Security = true;(命名爲Global):Global.CnString?或者我從根本上「做錯了」?

回答

2

這對我有用,其中靜態類Global是在XAML稱爲local的名稱空間中定義的。

<ObjectDataProvider 
    ObjectType="vm:SchedulerViewModel" 
    > 
    <ObjectDataProvider.ConstructorParameters> 
     <x:Static Member="local:Global.CnString" /> 
    </ObjectDataProvider.ConstructorParameters> 
</ObjectDataProvider> 

這個視圖模型構造函數被調用:

public SchedulerViewModel(string connString) 
{ 
    ConnectionString = connString; 
} 
+1

那麼簡單。我被掛斷了,因爲我正在離開''標籤並將它們環繞在''標籤上。謝謝,埃德。 – mwolfe02