2011-03-28 4 views
3

Visual Studio 2010 Visual Designer를 사용하면 디자인 타임 중에 외부 XML 파일을 통해 데이터를로드 할 수 있습니까?외부 XML 파일의 시간 데이터 디자인

d : DataContext를 통해 추가 할 수있는 것으로 보이지만 많은 양의 데이터가 있으며 XML을 통해로드하는 것이 더 쉽습니다. 이것이 가능한가?

+0

'd : DataContext'와 'XML을 통해로드'를 사용하는 것의 차이점은 무엇입니까? d : DataContext는 XML을로드 할 것이므로 찾고있는 다른 용도 나 기능이 있습니까? –

+0

My XML은 내 저장소에 대한 호출을 통해로드되므로 내 datacontext가 해당 저장소와 같습니다. 따라서 XML로 설정하면이 경우 작동하지 않습니다. – kevindaub

답변

2

당신이 할 수있는 한 가지는 런타임 중에 사용할 리포지토리 (또는 다른 객체)의 디자인 타임 버전을 만드는 것입니다. 제가 정기적으로 사용하는 간단한 접근법은 그렇게됩니다. App.xaml에서

:

<Application ...> 
    <Application.Resources> 
    <local:MyClass x:key="DesignData"/> 
    </Application.Resources> 
</Application> 

다음 클래스 생성자에서 당신이 디자인 모드에 있음을 감지 할 수 있으며, 그에 따라 데이터를 채 웁니다

public class MyClass 
{ 
    public MyClass() 
    { 
    bool isInDesign = DesignerProperties.GetIsInDesignMode(new DependencyObject()); 
    if (isInDesign) 
    { 
     // Load your XML + other setup routines. 
    } 

    // Normal ctor code. 
    } 
} 

을 마지막으로,이 항목을 사용하고 귀하의 컨텍스트로 데이터.

<Window ...> 
    <Grid d:DataContext="{StaticResource DesignData}"> 
    ... 
    </Grid> 
</Window> 

이것은 아마도 복잡한 디자인 타임 데이터를 얻는 데 사용할 수있는 가장 간단한 방법입니다. 물론 매우 복잡한 시나리오에 대해서는 'MyClass'또는 다른 접근법의 하위 클래스를 사용해야 할 수도 있지만,이를 처리 할만큼 충분히 알고있는 것 같습니다. 개인적인 경험으로 말하면이 접근법을 사용하여 생각할 수있는 모든 프로그램 상태에 대한 설계 데이터를 작성할 수 있으며 원하는 경우 DB에서 실제 데이터를 가져올 수도 있습니다. 물론, 응용 프로그램에서 디자인 데이터에 대해 생각하기 시작할수록 실제로 실제로 작동하게 만드는 것이 더 쉬워 질 것입니다.

+0

그게 내가 한 일이야. 나는 처음에는 어떤 결과도 보지 못했습니다. 감사. – kevindaub

+0

디자인 타임에 XML 파일을 어떻게로드합니까? 파일을 어디에 둘까요? 디자이너에게 파일을 찾는 방법은 무엇입니까? – SelAromDotNet

+0

디자이너가 클래스의 인스턴스를 구성하므로이 클래스를로드합니다. 위의 코드 블록에서 // XML + 다른 설정 루틴을 읽어 들인다. ? 원하는 모든 이전 위치에서 파일을로드 할 수 있습니다. 데이터베이스, 파일 시스템 또는 임베디드 리소스에 액세스 할 수 있습니다. –