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

C# 将连接字符串传递给ViewModel构造函数,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我试图遵循MVVM的最佳实践(据我所知)。我有一个解决方案,在我的主项目中有视图,在另一个项目中有视图模型。我在主项目中有一个静态类,它根据命令行参数(例如,/env=Production或/env=Development)返回当前环境的连接字符串 我想通过XAML将连接字符串注入ViewModel。以下方法可行,但需要我在XAML中硬编码连接字符串: <Window.DataContext> <ObjectDataProvider xmlns:sys="clr-nam

我试图遵循MVVM的最佳实践(据我所知)。我有一个解决方案,在我的主项目中有视图,在另一个项目中有视图模型。我在主项目中有一个静态类,它根据命令行参数(例如,/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>

数据源=。;初始目录=MyDb_Dev;综合安全=真实;

是否有方法替换硬编码字符串
数据源=。;初始目录=MyDb_Dev;综合安全=真实
调用我的静态类(名为Global)中的公共属性:
Global.CnString
?或者我根本上是“做错了”

这对我来说是可行的,但需要注意的是,静态类
Global
是在XAML调用的
local
名称空间中定义的

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

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

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

这么简单。我挂断电话是因为我将
标签留在原位,并将它们包裹在
标签上。谢谢,Ed,很简单。我挂断电话是因为我将
标签留在原位,并将它们包裹在
标签上。谢谢你,埃德。