Mvvm-Light를 사용 중이며 XAML의 바인딩이 실제로 지금까지 어떻게 작동 하는지를 무시했습니다.View (Mvvm-Light)의 객체에 바인딩 할 수 있도록 ViewModel DataContext를 어떻게 오버라이드합니까?
여기
제대로 내 뷰 모델 (SecuirtyPanelViewModel)에 결합 {바인딩 페이지 이름} {SecuritySystemName 바인딩}
<phone:PhoneApplicationPage.Resources>
</phone:PhoneApplicationPage.Resources>
<Grid x:Name="LayoutRoot" Background="Transparent">
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,14">
<TextBlock x:Name="ApplicationTitle" Text="{Binding SecuritySystemName}" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="{Binding PageName}" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<TextBlock Name="textCode"
DataContext="{WHAT GOES HERE to bind to properties on my View (SecurityPanelPage class)}"
Text="{Binding Path=Code}" />
</Grid>
내 XAML
입니다. 하지만 TextBlock 요소의 {Binding Code}가 ViewModel이 아닌 VIEW에 바인딩되기를 바랍니다.
저는 DataContext 및 Binding에서 지원하는 구문과 값을 설명하는 설명서 &을 검색 및 검색했습니다. 아무것도 도움이되지 않았습니다.
내가 알고 싶은 것은 DataContext를 설정하거나 (예 : {Binding ...}에서 내 View 객체를 가리키는 무언가를 지정하는 것입니다. "Self"및 모든 종류의 "RelativeSource" 일,하지만 아무도 작업 추측이 XAML 전에 디버거에 왕복 구문 분석되기 때문에 생산하지 않습니다 너무 깁니다
감사
UPDATE -... 나는 나 이동 취득하는 답을 찾았지만, 나는 여전히 나는 아래의 훌륭한 포스터에 대한 질문을 따르므로 grok하지 마라.
작동 방식 :
<phone:PhoneApplicationPage x:Name="ThisPage">
<TextBlock Name="textCode" Text="{Binding Code, ElementName=ThisPage"/>
</phone:PhoneApplicationPage>
나는 여기에 힌트를 발견 : http://bursjootech.blogspot.com/2007/12/bind-from-xaml-to-local-property-in.html
그는 다르게 질문을 : 어떻게 "숨김 코드에서 지역 특성에 XAML에서 바인딩"로 설정합니다.
아래 제공된 두 가지 해결책을 여전히 이해할 수 없습니다. 아래에 더 많은 질문이 있습니다 ...
확인하는 데 도움이됩니다. 나는 당신이 뭔가 다른 것을 제안하고 샘플이 완전하지 않다고 생각했습니다. 하지만 이제는 당신이 위에서 찾은 것과 같은 해결책을 제공하고있는 것을 봅니다. – tig
후속 조치를 요청하겠습니다. DataContext를 사용하는 예제에서 DataContext의 다른 구문이 루트에 도달하게되는 방법은 무엇입니까? 나는 전에 무언가를 보았지만 기억할 수는 없다고 맹세한다. – tig
오, 그리고 내 ViewModel에 속한이 물건에 대해 당신이 맞습니다. 나는 게으르다가 다음에이 일을하는 법을 알고 싶어서 산만 해졌다. 이제 코드가 속한 VM으로 다시 이동합니다. – tig