2010-12-16 3 views
4

내 응용 프로그램에 MVVM을 사용하면 컨트롤의 DataContext이 C# 코드 (XAML이 아님)에 할당됩니다.XAML DataContext 및 ViewModel 유형

따라서 XAML 컨트롤은 DataContext이 설정된 인스턴스 유형을 알지 못합니다. 결과적으로 XAML에서 내 viewmodel의 바운드 속성에 대한 리팩터링 지원 및 인텔리 센스가 없다는 것입니다.

컨트롤이 XAML에서 DataContext이 연결된 유형이 무엇인지 알 수있는 방법이 있습니까?

내 ViewModel에서 속성 이름을 수정하거나 해당 속성의 모든 참조를 검색 할 때 XAML 바인딩의이 속성도 고려해야합니다.

답변

3

프레임 워크 지원이 없으므로 VS 디자이너에게 DataContext의 '모양'을 알려서 속성에 대한 힌트를 제공 할 수 있습니다. 당신이 당신의 솔루션을 더 리팩토링 - 증거를 확인하려면, 나는 다니엘의 T4 메타 데이터 솔루션을 추천 할 것입니다 : 당신은 XAML에서 참조 할 수 있습니다보기 모델

http://www.codeproject.com/KB/codegen/T4Metadata.aspx

이 generatesmetadata :

<StackPanel DataContext="{Binding Source={StaticResource Person}}"> 
    <TextBlock >Name:</TextBlock> 
    <TextBox Text="{Binding Path={x:Static Metadata:PersonMetadata.NamePath}}"/> 
</StackPanel> 

Colin E.

2

아니요, DataContext는 런타임에 변경 될 수 있으므로이 유형을 특정 유형에 연결하는 것은 의미가 없습니다.

+2

이것이 사실 일 수 있지만 컨트롤이 특정 특정 뷰 모델 유형에 연결된 경우가 많습니다. – thumbmunkeys