将连接字符串传递给ViewModel构造函数

时间:2017-09-05 14:12:18

标签: c# wpf xaml mvvm

我试图遵循MVVM的最佳实践(据我所知)。我在我的主项目中有一个View的解决方案,在另一个项目中有ViewModels。我的主项目中有一个静态类,它根据命令行参数返回当前环境的连接字符串(例如,/ env = Production或/ env = Development)。

我想通过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>

有没有办法用我的静态类(名为Global)中的公共属性调用替换硬编码字符串Data Source =.; Initial Catalog = MyDb_Dev; Integrated Security = true;Global.CnString?或者我从根本上做错了#34;?

1 个答案:

答案 0 :(得分:2)

这对我有用,但需要注意的是静态类Global是在XAML调用local的命名空间中定义的。

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

此viewmodel构造函数被调用:

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