2017-09-05 1 views
0

MVVM에 대한 모범 사례를 따르려고합니다. 내 주요 프로젝트에는 View가 있고 다른 프로젝트에는 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.CnString? 아니면 근본적으로 "잘못하고있는 것"입니까?

답변

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; 
} 
+1

그래서 간단한. ''태그를 그대로두고''태그 주위에 래핑하기 때문에 끊기고있었습니다. 고마워, 에드. – mwolfe02

관련 문제