我试图遵循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;?
答案 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;
}