Я использую Mvvm-Light и до сих пор игнорировал, как на самом деле работает связывание в XAML.
Вот мой XAML
<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>
{Binding SecuritySystemName} и {Binding PageName} правильно связываются с моей ViewModel (SecuirtyPanelViewModel). Но я хочу, чтобы {Binding Code} в элементе TextBlock связывался с моим VIEW (а не с ViewModel).
Я искал и искал документацию и примеры, объясняющие синтаксис и значения, поддерживаемые DataContext и Binding. Ничего не помогло.
Все, что я хочу знать, - это как установить DataContext (или указать что-то в {Binding ...}, который будет указывать на мой объект View. Я пробовал "Self" и все виды вещей "RelativeSource") , но ничего не работает. Гадание не продуктивно, потому что обход в отладчике до разбора XAML слишком длинный.
Спасибо.
ОБНОВЛЕНИЕ - Я нашел ответ, который заставляет меня двигаться, но я все еще не лажу, поэтому у меня есть дополнительные вопросы для прекрасных плакатов ниже.
Вот что работает:
<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 к локальному свойству в code-behind".
Я все еще не понимаю два решения, представленные ниже. Так что больше вопросов ниже ...