Привязка данных в сводном TitleTemplate для Windows Phone - PullRequest
4 голосов
/ 17 января 2011

Я, должно быть, упускаю что-то простое здесь ... Я пишу приложение для Windows Phone 7, и я настроил свой сводный заголовок так:

<controls:Pivot Name="InfoPivot">
  <controls:Pivot.TitleTemplate>
    <DataTemplate>
      <StackPanel Orientation="Horizontal" Margin="0,0,0,0" VerticalAlignment="Top">
        <Rectangle Fill="{Binding CategoryFill}"  Height="50" Width="50" Margin="355,25,0,0" HorizontalAlignment="Left"  VerticalAlignment="Top" Name="CategoryRect" />
        <StackPanel Margin="-425,-14,0,0" Width="432">
          <TextBlock x:Name="StationTitle" Text="{Binding StationTitle}" Margin="10,0,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
          <TextBlock Name="LocationTitle" Text="{Binding LocationTitle}" TextWrapping="Wrap" Margin="12,0,0,20" Style="{StaticResource PhoneTextNormalStyle}"/>
         </StackPanel>
       </StackPanel>
     </DataTemplate>
   </controls:Pivot.TitleTemplate>

Когда я перехожу на эту страницу, я передаю Station и Location в качестве параметров, и в OnNavigatedTo () для этой страницы я пытаюсь установить StationTitle и LocationTitle. К сожалению, я получаю:

Error 2 The name 'StationTitle' does not exist in the current context

Как / как мы должны получать доступ к членам в шаблоне заголовка сводки? Любая помощь будет оценена! Спасибо.

Ответы [ 3 ]

5 голосов
/ 17 января 2011

Прекратите использовать шаблон заголовка и привязку, чтобы добиться этого.Попробуйте вместо этого: -

<controls:Pivot Name="InfoPivot">
   <controls:Pivot.Title>
       <StackPanel Orientation="Horizontal" Margin="0,0,0,0" VerticalAlignment="Top">
          <Rectangle Fill="{Binding CategoryFill}" Height="50" Width="50" Margin="355,25,0,0" HorizontalAlignment="Left"  VerticalAlignment="Top" Name="CategoryRect" />
          <StackPanel Margin="-425,-14,0,0" Width="432">
              <TextBlock x:Name="StationTitle" Margin="10,0,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
              <TextBlock x:Name="LocationTitle" TextWrapping="Wrap" Margin="12,0,0,20" Style="{StaticResource PhoneTextNormalStyle}"/> 
          </StackPanel>
        </StackPanel>
   </controls:Pivot.Title>

Затем в коде позади: -

 if (NavigationContext.QueryString.TryGetValue("Station", out station))
 {
     StationTitle.Text = station;
 }

 if (NavigationContext.QueryString.TryGetValue("LocationTitle", out locationTitle))
 {
     LocationTitle.Text = locationTitle;
 }
1 голос
/ 17 января 2011

Не видя весь ваш код, это может быть так же просто, как сделать объявление Name согласованным для ваших двух TextBlocks.

Обратите внимание, одно имя = "", другое x: имя = "".

0 голосов
/ 24 декабря 2013

Определение встроенного шаблона работало для меня, TitleTemplate просто не будет работать.

<phone:Pivot>
    <phone:Pivot.Title>
        <TextBlock Margin="0"
            Text="{Binding Exercise.Name}" 
            Style="{StaticResource MainTitleStyle}"/>
    </phone:Pivot.Title>
</phone:Pivot>
...