2011-01-17 2 views
4

내가 여기에 간단한 뭔가 빠진해야 Windows Phone 용 피벗 TitleTemplate 바인딩 ... 나는 윈도우 폰 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> 

때 I을 이 페이지로 이동하여 매개 변수로 스테이션 및 위치를 전달하고이 페이지의 OnNavigatedTo()에서 StationTitle 및 LocationTitle을 설정하려고합니다.

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

우리는 어떻게 피벗 TitleTemplate에 회원 액세스에 대한/이동 수행해야합니다 불행히도, 난 그만 둘? 어떤 도움을 주시면 감사하겠습니다! 감사.

+0

안녕하세요, Shawn, 매개 변수를 신고하는 방법을 알려주세요. –

+0

SelectionChangedHandler의 MainPage.xml에서 : NavigationService.Navigate (새 Uri ("/ TestInfoPivot.xaml?"+ "Station ="+ stationStr + "& Location ="+ locationStr, UriKind.Relative)); 내가 stationStr과 locationStr 올바른 값을 가지고 있음을 확인했습니다 .... 다음 TestInfoPivot.xaml에 나는 문자열 역 = ""을; if (NavigationContext.QueryString.TryGetValue ("스테이션", 스테이션 밖)) { StationTitle = 스테이션; } 은 LocationTitle과 유사합니다. – Shawn

+0

TestInfoPivot의 QueryString 코드가 실행 된 후 StationTitle 및 LocationTitle에 올바른 값이 표시됩니까? 코드 블록을 보지 않고도이 점을 이해하기 어렵습니다. 원래 질문을 편집하여 붙여 넣을 수 있다면 바람직합니다. –

답변

1

코드를 모두 보지 않고도 이름 선언을 두 TextBlock에서 일관되게 유지하는 것처럼 간단 할 수 있습니다.

하나는 Name = ""이며 다른 하나는 x : Name = ""입니다.

+1

요소에'Name' 속성이 있으면'x : Name'과'Name'이 동일합니다. 'TextBlock'은'Name' 속성을 가지고 있습니다. – AnthonyWJones

5

제목 템플릿을 사용하여 중지하고 바인딩하려면 바인딩하십시오. 대신이 시도 : -

<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

이상한, 그래서 TitleTemplate가 작동하지 않는 이유는 무엇입니까? 여하튼, 이것은 나의 문제를 고쳤다. 감사! –

0

템플릿 인라인 나를 위해 일을 정의하는 TitleTemplate은 작동하지 않을 것입니다.

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