2014-10-03 2 views
0

이 기사에서는 WPF에서 데이터 바인딩을 이해하기 위해 http://msdn.microsoft.com/en-us/magazine/hh852595.aspx을 읽었습니다. 그러나 코드에서 데이터 컨텍스트를 바인딩하는 방법에 대해서만 필요합니다.WPF에서 데이터 바인딩을 설정하는 방법

ContentPanel.DataContext = _currentPerson; 

나는이 아이템 페이지 xaml을 가지고 있습니다. 나는 DataContext가 어떻게 설정되는지 이해하지 못한다. DataContext 특성과 d : DataContext 특성의 차이점은 무엇입니까?

<Page 
    x:Class="Myapp.ItemPage" 
DataContext="{Binding DefaultViewModel.Item, RelativeSource={RelativeSource Self}}" 
    d:DataContext="{Binding Groups[0].Items[0], Source={d:DesignData Source=../OneList.Shared/DataModel/SampleData.json, Type=data:SampleDataSource}}" 
> 
... 
</Page> 
+0

D : DataContext를 디자인 타임 위한 것이며 DataContext를 런타임위한 – Younes

답변

1

페이지 DataContext이 줄에서 설정됩니다

DataContext="{Binding DefaultViewModel.Item, RelativeSource={RelativeSource Self}}" 
  • ItemPage는 재산 DefaultViewModel이 있어야합니다. 그래서 DataContext를 DefaultViewModel 인스턴스의 Item 속성에 바인딩합니다.

  • RelativeSource Self에서는 바인딩 엔진에 페이지 내의 DefaultViewModel 속성을 찾도록 요청했습니다.

또한 DataContext는 상속 가능한 종속성 속성이므로 자식 요소는 부모 페이지에서 DataContext를 자동으로 상속합니다. 또한 바인딩을 해결하기 위해 WPF 바인딩 엔진은 RelativeSource 태그 확장을 사용하여 다른 곳을 찾기 위해 명시 적으로 요청하지 않는 한 DataContext에서 속성을 찾습니다.


d:DataContextDataContext 런타임에 바인딩을 확인하는 데 사용 반면 디자인 모드에 대한 을 사용한다.

d : DataContext를 사용하면 디자이너보기에서 페이지의 실제 모양과 느낌을주기 위해 사용하는 더미 DataContext를 제공합니다. (디자인 타임 데이터 바인딩에 사용됨).

2

d:DataContext은 설계 시간입니다. 이렇게 설정하면 Expression Blend와 같은 도구에서 데이터를 볼 수 있습니다.

dxmlns:d="http://schemas.microsoft.com/expression/blend/2008"입니다. 일반적으로 mc:Ignorable="d"도 포함해야합니다.

패널의 디자인 시간 너비와 높이를 지정하려는 경우에도 유용합니다. 예를 들어,

D : DesignWidth = "1280"D : DesignHeight = "812"

관련 문제